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視窗
跳出提示訊息方塊
跳出警告訊息方塊
跳出疑問訊息方塊
跳出疑問訊息方塊(YesNoCancel)
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就為預設值空白
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 | 倒退一個字元 |
| \f | Form Feed |
| \n | 換新行 |
| \r | 換行並移到最前方 |
| \t | 水平方向的Tab |
| \v | 垂直方向的Tab |
2012年2月7日 星期二
[C#]記錄程式執行時間
記錄程式執行時間
要先using System.Diagnostics;
要先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
因為太常忘記.就放著讓我隨時可以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();
}
}
訂閱:
文章 (Atom)

