<p><font face="Verdana">namespace DataGridDoubleClick<br/>{<br/> using System;<br/> using System.Drawing;<br/> using System.Collec
tions;<br/> using System.ComponentModel;<br/> using System.Windows.Forms;<br/> using System.Data;</font></p>
<p><font face="Verdana"> public class Form1 : System.Windows.Forms.Form<br/> {<br/> private System.Windows.Forms.DataGrid dataGrid1;<br/> private DataSet myDataSet;<br/> DateTime gridMouseDownTime;<br/> private System.Windows.Forms.Label label1;<br/> <br/> private System.ComponentModel.Container components = null;</font></p>
<p><font face="Verdana"> public Form1()<br/> {<br/> InitializeComponent();<br/> gridMouseDownTime = DateTime.Now;<br/> SetUp();<br/> }</font></p>
<p><font face="Verdana"> private void SetUp()<br/> {<br/> // 用2个Table和1和Relation创建DataSet<br/> MakeDataSet();<br/> // 数据绑定<br/> dataGrid1.SetDataBinding(myDataSet, "Customers");</font></p>
<p><font face="Verdana"> //添加样式<br/> AddCustomDataTableStyle();<br/> }</font></p>
<p><font face="Verdana"> private void MakeDataSet()<br/> {<br/> // 创建DataSet.<br/> myDataSet = new DataSet("myDataSet");<br/> <br/> // 创建2个DataTables.<br/> DataTable tCust = new DataTable("Customers");<br/> <br/> // 创建两个列,并添加到第一个表<br/> DataColumn cCustID = new DataColumn("custID");<br/> DataColumn cCustName = new DataColumn("custName");<br/> DataColumn cCurrent = new DataColumn("custCity");<br/> tCust.Columns.Add(cCustID);<br/> tCust.Columns.Add(cCustName);<br/> tCust.Columns.Add(cCurrent);</font></p>
<p><font face="Verdana"> // 把tables添加到DataSet.<br/> myDataSet.Tables.Add(tCust);<br/> <br/> <br/> /* 计算tables.对每个客户,创建DataRow变量 */<br/> DataRow newRow1;<br/> <br/> // 添加记录到 Customers Table.<br/> for(int i = 1; i < 4; i++)<br/> {<br/> newRow1 = tCust.NewRow();<br/> newRow1["custID"] = (100*i).ToString();<br/> tCust.Rows.Add(newRow1);<br/> }</font></p>
<p><font face="Verdana"> tCust.Rows[0]["custName"] = "【孟宪会之精彩世界】";<br/> tCust.Rows[1]["custName"] = "net_lover";<br/> tCust.Rows[2]["custName"] = "http://xml.sz.luohuedu.net/";</font></p><font face="Verdana">
<p><br/> tCust.Rows[0]["custCity"] = "北京";<br/> tCust.Rows[1]["custCity"] = "上海";<br/> tCust.Rows[2]["custCity"] = "河南";<br/> }</p>
<p> private void AddCustomDataTableStyle()<br/> {<br/> DataGridTableStyle ts1 = new DataGridTableStyle();<br/> ts1.MappingName = "Customers";<br/> // 设置属性<br/> ts1.AlternatingBackColor = Color.LightGray;</p>
<p> // 添加Textbox列样式,以便我们捕捉鼠标事件<br/> DataGridTextBoxColumn TextCol = new DataGridTextBoxColumn();<br/> TextCol.MappingName = "custID";<br/> TextCol.HeaderText = "序号";<br/> TextCol.Width = 100;</p>
<p> //添加事件处理器<br/> TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);<br/> TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);<br/> ts1.GridColumnStyles.Add(TextCol);</p>
<p> TextCol = new DataGridTextBoxColumn();<br/> TextCol.MappingName = "custName";<br/> TextCol.HeaderText = "姓名";<br/> TextCol.Width = 100;<br/> //添加事件处理器<br/> TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);<br/> TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);<br/> ts1.GridColumnStyles.Add(TextCol);</p>
<p> TextCol = new DataGridTextBoxColumn();<br/> TextCol.MappingName = "custCity";<br/> TextCol.HeaderText = "地址";<br/> TextCol.Width = 100;<br/> //添加事件处理器<br/> TextCol.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);<br/> TextCol.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);<br/> ts1.GridColumnStyles.Add(TextCol);<br/> <br/> dataGrid1.TableStyles.Add(ts1);<br/> <br/> }</p>
<p> protected override void Dispose( bool disposing )<br/> {<br/>
IF( disposing )<br/> {<br/> if (components != null) <br/> {<br/> components.Dispose();<br/> }<br/> }<br/> base.Dispose( disposing );<br/> }</p>
<p> #region Windows Form Designer generated code<br/> private void InitializeComponent()<br/> {<br/> this.dataGrid1 = new System.Windows.Forms.DataGrid();<br/> this.label1 = new System.Windows.Forms.Label();<br/> ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();<br/> this.SuspendLayout();<br/> // <br/> // dataGrid1<br/> // <br/> this.dataGrid1.CaptionBackColor = System.Drawing.SystemColors.Info;<br/> this.dataGrid1.CaptionForeColor = System.Drawing.SystemColors.WindowText;<br/> this.dataGrid1.CaptionVisible = false;<br/> this.dataGrid1.DataMember = "";<br/> this.dataGrid1.Heade
RForeColor = System.Drawing.SystemColors.ControlText;<br/> this.dataGrid1.Location = new System.Drawing.Point(11, 9);<br/> this.dataGrid1.Name = "dataGrid1";<br/> this.dataGrid1.Size = new System.Drawing.Size(368, 144);<br/> this.dataGrid1.TabIndex = 0;<br/> this.dataGrid1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);<br/> // <br/> // label1<br/> // <br/> this.label1.Location = new System.Drawing.Point(4, 166);<br/> this.label1.Name = "label1";<br/> this.label1.Size = new System.Drawing.Size(383, 23);<br/> this.label1.TabIndex = 1;<br/> this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;<br/> this.label1.Click += new System.EventHandler(this.Form1_Click);<br/> // <br/> // Form1<br/> // <br/> this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);<br/> this.ClientSize = new System.Drawing.Size(387, 201);<br/> this.Controls.AddRange(new System.Windows.Forms.Control[] {<br/> this.label1,<br/> this.dataGrid1});<br/> this.Name = "Form1";<br/> this.Text = "鼠标双击事件的例子";<br/> ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();<br/> this.ResumeLayout(false);</p>
<p> }<br/> #endregion</p>
<p> [STAThread]<br/> static void Main() <br/> {<br/> Application.Run(new Form1());<br/> }</p>
<p> private void TextBoxDoubleClickHandler(object sender, EventArgs e)<br/> {<br/> MessageBox.Show("双击事件发生。鼠标双击到的值:"+((TextBox)sender).Text.ToString());<br/> }</p>
<p> private void TextBoxMouseDownHandler(object sender, MouseEventArgs e)<br/> {<br/> if(DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))<br/> {<br/> MessageBox.Show("双击事件发生。鼠标双击到的值:"+((TextBox)sender).Text.ToString());<br/> }<br/> label1.Text = "TextBox 鼠标按下了。 ";<br/> }</p>
<p> private void dataGrid1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)<br/> {<br/> gridMouseDownTime = DateTime.Now;<br/> label1.Text = "DataGrid1 鼠标按下了。 ";<br/> }</p>
<p> private void Form1_Click(object sender, System.EventArgs e)<br/> {<br/> label1.Text="";<br/> }<br/> private void label1_Click(object sender, System.EventArgs e)<br/> {<br/> label1.Text="";<br/> }<br/> }<br/>}<br/></font></p>