捕捉DataGrid的双击事件(C#版本)

原创 2004年09月22日 18:30:00
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="";
    }
}
}

EasyUI DataGrid表格双击获取该行数据—笔记

绑定双击事件函数$("#queDg").datagrid({ ... ... ... ... onDblClickRow:function(rowIndex){ ...
  • qq_15370821
  • qq_15370821
  • 2016年12月10日 16:46
  • 4014

EasyUI datagrid表格双击操作的实现

在EasyUI的表格中实现双击某行执行相应操作,主要使用onDblClickRow方法,参考代码如下: var movieList; $(function() { movieLis...
  • djc777
  • djc777
  • 2016年03月31日 10:13
  • 1418

C#窗体鼠标事件区分单击双击

直接用窗体的click和doubleclick事件相应函数是没办法区分的,因为click在doubleclick前面被触发。 办法一: 在mousedown事件中处理,通过timer计算两次单击时...
  • gaiazhang
  • gaiazhang
  • 2016年12月28日 16:16
  • 1653

Android中view控件双击事件的捕捉

Android控件中获取双击事件的获取有时候挺折磨人的。我们可以通过控件的TouchEvent和view的postdelayed来判断控件是否被双击。 TouchEvent是来捕捉控件view被触摸的...
  • Franksun1991
  • Franksun1991
  • 2014年12月09日 23:10
  • 1389

EasyUI中对datagrid的双击事件

昨日历史系论文盖章,这意味着大学专业课已经与我渐行渐远,有点怀念上心头,大学太快了。和几个老师聊了会,有别离的时候会发现原来老师都是这么亲切。盖章的同时,青山打个电话说道:刚哥,给你说个好消息,咱们系...
  • a137151062
  • a137151062
  • 2014年03月13日 16:54
  • 23671

easyui 双击行,启动编辑 ,及 保存 和 撤销 的实现。

DataGrid 中,使用的 事件,方法,均可查看 easyui API  1、在所有需要启动编辑的列,加上 editor,可查看 API 中,列属性:editor 。其中,当 editor 的 ty...
  • u012246342
  • u012246342
  • 2017年04月17日 14:02
  • 1371

wpf 双击事件及全屏和退出全屏

作为一个新手,大家不要乱喷,高手勿进。嘿嘿 最近在做一个win7的cs软件,可是把窗口拖动到边框上就会让窗口全屏,并且不能自动退出全屏,没有办法就百度了,大概有两种方法, 1、就是修改注册表把wi...
  • lyy080808
  • lyy080808
  • 2015年12月26日 08:01
  • 2162

MVVM下DataGrid的简单应用

基于MVVM模式下DataGrid的简单应用,本实例将实现一个用户列表的展示和一些数据操作功能,如图1。 图1 实例要求: (1)实现用户列表的绑定。 (2)绑定性...
  • pan_junbiao
  • pan_junbiao
  • 2016年04月03日 18:35
  • 2084

winform中键盘和鼠标事件的捕捉和重写

在编写winform应用程序时,有时需要无论在nag
  • mushao999
  • mushao999
  • 2014年11月21日 16:23
  • 3072

easyUI双击datagrid行然后跳转页面并且查看行内容

事物总结、和大家分享一些东西 首先要先写双击事件 函数 striped:true, idField:'id', rownumbers:true, singleSelect:tr...
  • qq_34301871
  • qq_34301871
  • 2016年12月28日 20:24
  • 2286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:捕捉DataGrid的双击事件(C#版本)
举报原因:
原因补充:

(最多只允许输入30个字)