顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2012年11月7日 星期三

[C#]dr.delete


http://msdn.microsoft.com/zh-tw/library/ww3k31w0(v=VS.80).aspx



若RowState為added時
代表dt有加入值,但還沒接受變更

這個時候執行
foreach(DataRow dr in dt.Rows)
{
dr.delete();
}

會出現資料集已改變

這時,RowState的狀態是Detached
所以就會直接刪除

要在foreach之前就先執行dt.AcceptChange();

Rowstate的狀態才會是Delete

2012年9月21日 星期五

2012年8月27日 星期一

[C#] MessageBox.Show 應用

跳出錯誤Message視窗

public static void ShowError(string MessageText)
{
MessageBox.Show(MessageText, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}


跳出提示訊息方塊

public static void ShowHint(string MessageText)
{
MessageBox.Show(MessageText, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}


跳出警告訊息方塊

public static void ShowWarning(string MessageText)
{
MessageBox.Show(MessageText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}


跳出疑問訊息方塊

public static bool ShowQuestion(string MessageText)
{
return MessageBox.Show(MessageText, "問題", MessageBoxButtons.YesNo, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button2).Equals(DialogResult.Yes);
}


跳出疑問訊息方塊(YesNoCancel)

public static DialogResult ShowConfirm(string MessageText)
{
return MessageBox.Show(MessageText, "問題", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);
}

2012年8月7日 星期二

[C#]自動產生DataGridView

自動產生DataGridView


DataTable dt = GetScoreTypeTable();
//取得項目類別

DataTable dtItem = AssessScoreProxy.GetAssessItem(101, 8);
foreach (DataRow dr in dt.Rows)
{

    TabPage tbpage = new TabPage();
    tbpage.Location = new System.Drawing.Point(4, 24);
    tbpage.Padding = new System.Windows.Forms.Padding(3);
    tbpage.Size = new System.Drawing.Size(685, 539);
    tbpage.Name = "tp" + dr["No"];
    tbpage.Text = dr["Name"].ToString();
    tbpage.TabIndex = Convert.ToInt16(dr["No"]);
    tbpage.AutoScroll = true;
//是否自動顯示捲軸

    tbpage.UseVisualStyleBackColor = true;
    tabControl1.Controls.Add(tbpage);

    DataGridView dgv = new DataGridView();
    DataGridViewTextBoxColumn colItem = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn colScore = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn colTotScore = new DataGridViewTextBoxColumn();
    DataGridViewTextBoxColumn colScored = new DataGridViewTextBoxColumn();

    dgv.AllowUserToAddRows = false;
    dgv.AllowUserToDeleteRows = false;

    dgv.BackgroundColor = System.Drawing.SystemColors.Window;
    dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    dgv.Columns.Add(colItem);
    dgv.Columns.Add(colScore);
    dgv.Columns.Add(colTotScore);
    dgv.Columns.Add(colScored);
    dgv.Dock = System.Windows.Forms.DockStyle.Fill;
    dgv.Location = new System.Drawing.Point(0, 0);
    dgv.Name = "dgv";
    dgv.RowHeadersWidth = 10;
    dgv.RowTemplate.Height = 24;
    dgv.Size = new System.Drawing.Size(685, 539);
    dgv.TabIndex = 0;

    // colItem 
    colItem.HeaderText = "項目";
    colItem.Name = "colItem" + dr["No"];
    colItem.ReadOnly = true;
    colItem.Width = 150;
    colItem.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
    // colScore
    colScore.HeaderText = "分數";
    colScore.Name = "colScore" + dr["No"];

    // colTotScore
    colTotScore.HeaderText = "此項目所佔總分";
    colTotScore.Name = "colTotScore" + dr["No"];
    colTotScore.ReadOnly = true;
    colTotScore.Width = 150;

    // colScored
    colScored.HeaderText = "此項目已評分數加總";
    colScored.Name = "colScored" + dr["No"];
    colScored.ReadOnly = true;
    colScored.Width = 180;

    DataRow[] drItem = dtItem.Select("ScoreType='" + dr["No"] + "'");
    foreach (DataRow drI in drItem)
    {
        dgv.Rows.Add(drI["ScoreItemName"], "", drI["Percentage"], 0);
    }
    tbpage.Controls.Add(dgv);
}


2012年8月6日 星期一

[C#]自動產生物件


/// <summary>
/// 自動產生物件
/// </summary>
private void SetTabControlDefault()
{
    int pagecount =10;
    int count = 30;
    //TabPage(1~10)自動產生
    for (int J = 0; J < pagecount; J++)
    {
        TabPage tbpage = new TabPage();
        tbpage.Location = new System.Drawing.Point(4, 24);
        tbpage.Padding = new System.Windows.Forms.Padding(3);
        tbpage.Size = new System.Drawing.Size(685, 539);
        tbpage.Name = "tp" + J.ToString();
        tbpage.Text =  J.ToString();
        tbpage.TabIndex = J;
        tbpage.AutoScroll = true; //是否自動顯示捲軸
        tbpage.UseVisualStyleBackColor = true;

        tabControl1.Controls.Add(tbpage);
        //label.textbox 每個tabPage各產生30個
        for (int i = 0; i < count; i++)  
        {
            Label lb = new Label();  //label
            lb.Name = "lb" + tbpage.Name.ToString() + i.ToString();
            lb.Text = "lb" + tbpage.Name.ToString() + i.ToString();
            lb.AutoSize = true;
            lb.Location = new System.Drawing.Point(15, 10 + i * 30);
            lb.Size = new System.Drawing.Size(150, 25);
            lb.TabIndex = i;
            tbpage.Controls.Add(lb);

            TextBox txt = new TextBox(); //textbox
            txt.Name = "txt" + tbpage.Name.ToString() + i.ToString();
            txt.Location = new System.Drawing.Point(150, 10 + i * 30);
            txt.Size = new System.Drawing.Size(150, 25);
            txt.TabIndex = i;
            tbpage.Controls.Add(txt);
        }
    }          
}

2012年7月5日 星期四

[C#]當條件成立.變更背景顏色

當條件成立時,將該列的背景顏色變更

private void dgv_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e)
{
try
{
DataGridView dgv = (sender as DataGridView);
if (dgv.Columns["dgvIsSelf"].Index == e.ColumnIndex)
{
if (Convert.ToBoolean(e.Value) == true) //是自費時,該列的顏色為黃色
{
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
}
else
{
dgv.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
}
}
}
catch (Exception ex)
{
ex.ToString();
}


}

2012年7月4日 星期三

[LINQ]合併兩個DataTable

dt1:(id,name,add)
dt2:(id,tel)
要將dt1與dt2合併成
使用LINQ的LEFT JOIN
dt1有資料但dt2沒資料時,資料仍存在,沒有值的dt2就為預設值空白


var query =
 from a in dt1.AsEnumerable()
 join b in dt2.AsEnumerable()
   on a.Field("NAME") equals b.Field("NAME") into k
 from subpet in k.DefaultIfEmpty()
select new
{ ID = a.Field("ID"),
 NAME= a.Field("NAME"),
 ADD = a.Field("ADDRESS"),
 TEL = (subpet == null ? String.Empty: subpet.Field("TEL "))
)};

2012年5月9日 星期三

[C#] DataRow的刪除


private void SetTestDataTable()
{
DataTable dtTest = new DataTable();
dtTest.Columns.Add("Id",typeof(int));
dtTest.Columns.Add("Name",typeof(string));
dtTest.Rows.Add(1, "aaa");
dtTest.Rows.Add(2, "bbb");
dtTest.Rows.Add(3, "ccc");
dtTest.Rows.Add(4, "ddd");
dtTest.Rows.Add(5, "eee");

foreach (DataRow dr in dtTest.Rows)
{
  if (Convert.ToInt16(dr["id"].ToString()) % 2 == 0)
  {
     dr.Delete(); //標記要刪資的資料列
  }
}

dtTest.AcceptChanges(); //真正移除作業
}

2012年5月8日 星期二

[C#]鍵盤事件-按Enter執行動作及Ctrl+A全選


Button按下ENTER時做的動作

private void Button1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (Char)Keys.Enter)
{
TextBox.Text = "";
}
}


TextBox內設定全選功能
private void TextBox_SelectAll(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
(sender as TextBox).SelectAll();
}
}

2012年5月4日 星期五

[C#]使用xmlWriter建立xml文件

使用xmlWriter建立xml文件


XmlWriter writer = null;

Encoding enc = Encoding.GetEncoding("big5");

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = false;
settings.NewLineOnAttributes = true;
settings.Encoding = enc;

settings.Indent = true;
settings.IndentChars = ("\t");

spath = @"c:\" + sNow + ".xml";
writer = XmlWriter.Create(spath, settings);
writer.WriteStartElement("body");
writer.WriteElementString("d1", "001");
writer.WriteElementString("d2", "002");
writer.WriteEndElement();
writer.Flush();

[C#]常用逸出字元


C#常用逸出字元
跳脫字元功能說明
\'單引號
\"雙引號
\\反斜線
\a發出一聲警告
\b倒退一個字元 
\fForm Feed 
\n換新行 
\r換行並移到最前方
\t水平方向的Tab
\v垂直方向的Tab

2012年2月7日 星期二

[C#]記錄程式執行時間

記錄程式執行時間
要先using System.Diagnostics;

using System.Diagnostics;
Stopwatch sw = new Stopwatch();
sw.Reset();
sw = Stopwatch.StartNew();
//要測時間的程式碼放這裡
sw.Stop();
TimeSpan e1 = sw.Elapsed;
long ms = sw.ElapsedMilliseconds;
MessageBox.Show(e1 + "秒 " + ms + "毫秒");

2012年1月19日 星期四

[C#]將文件寫入檔案裡

將文件寫入檔案裡,會自動產生一個檔案,把文字寫入此檔案裡


private bool CreateXml(string xml)
{
try
{
string sNow = DateTime.Today.Year.ToString()
+ DateTime.Now.ToString("MMddHHmmss");
string spath = @"c:\RecXml\RecsXml" + sNow + ".xml";
StreamWriter sw = File.AppendText(spath);
sw.WriteLine(xml);
sw.Flush();
sw.Close();

HisMessage.ShowHint("檔案寫入成功,路徑:" + spath);
return true;
}
catch
{
HisMessage.ShowHint("寫入xml檔時發生錯誤");
return false;
}
}

[C#]顯示處理進度狀態-ProgressBar

想要在畫面上顯示處理進度狀態.從工具箱抓出來再加幾小段程式即可

progressBar1.Maximum = 600;
for (int i = 1; i <= 600; i++)
{
sxml = sxml + GetREC(i);
progressBar1.Value = i;
}







2012年1月18日 星期三

[C#]Switch-case用法

Switch-case用法...
因為太常忘記.就放著讓我隨時可以copy


private void Switch_Test(Int16 INo)
{
switch (INo)
{
case 0:
MessageBox.Show("0");
break;
case 1:
MessageBox.Show("1");
break;
case 2:
MessageBox.Show("2");
break;
default :
MessageBox.Show("default");
break;
}
}

2012年1月17日 星期二

[C#]TextBox全選-Ctrl+A

TextBox全選按Ctrl+A都沒反應....

把下面這串Function套到textbox事件的keydown即可!!



private void TextBox_SelectAll(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
(sender as TextBox).SelectAll();
}
}