CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

C# windows程序中,如果实现DataGrid单行双击事件?

楼主luckyjia(佳佳)2005-08-03 14:47:49 在 .NET技术 / C# 提问

C#   Form中,如何让鼠标实现单行双击事件,而双击DataGrid头等地方不触发事件?  
      请给出程序示例,谢谢! 问题点数:20、回复次数:1Top

1 楼topycsdn(神木_草)回复于 2005-08-03 16:47:57 得分 20

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

相关问题

  • C#中DataGrid控件如何接鼠标收双击事件
  • 寻求单行编辑器(sle)的单、双击事件,急!
  • C# WinForm: DataGrid中如何双击取得当前行数据?(非WEB程序)
  • 单行编辑框没有双击事件,请问是否有好的代替方法?
  • 在C#.NET中如何将在 DataGrid (Winform下的) 双击过的行变为某个指定的颜色? -- 求助DataGrid高手们(急)
  • 我要对一个单行编辑器(sle_1)鼠标双击后激活另一个窗口,可单行编辑器中没有双击事件,我想编一个用户事件,请问该用哪个事件ID?
  • DataGrid双击事件处理程序
  • DataGrid双击时选择这一行;
  • 如何实现DataGrid双击的问题
  • 关于datagrid的双击事件

关键词

  • c#
  • datagrid
  • 双击
  • mydataset
  • 事件
  • 创建
  • datatable
  • dataset
  • form
  • private

得分解答快速导航

  • 帖主:luckyjia
  • topycsdn

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo