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

原创 2007年09月27日 16:24: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 = "";
        }
    }

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

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

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

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

如何在JavaScript捕获鼠标事件

前言 为页面增加与用户的交互是JavaScript的基本功能之一。为此,我们需要一些机制来检测用户和程序在特定时间 在做什么。比如鼠标在浏览器的什么位置,用户是否点击鼠标或按了键,页面是否完整...
  • GULINHAI12
  • GULINHAI12
  • 2015年09月04日 08:47
  • 4368

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

  • 2009年11月16日 19:20
  • 6KB
  • 下载

Datagrid实现双击行事件

  • 2013年05月19日 19:23
  • 18KB
  • 下载

Datagrid实现双击行事件

  • 2006年02月23日 09:05
  • 18KB
  • 下载

silverlight dataGrid 模拟双击一行事件

  • 2011年03月09日 14:08
  • 272KB
  • 下载

GridView/DataGrid行单击和双击事件实现代码_.Net教程

功能: 单击选中行,双击打开详细页面
  • CodeSection
  • CodeSection
  • 2016年12月17日 11:22
  • 208

flex Datagrid数据列双击事件实现

最近做flex的项目遇到了一个问题:要实现双击DataGrid的一行数据,将该行数据赋值到打开的新窗口中。    在网上找了好久,发现要么答非所问,要么就是只言片语。所以我想通过CSDN这个平台把我...
  • zhang_jian__
  • zhang_jian__
  • 2016年07月05日 08:45
  • 1269

EasyUI中对datagrid的双击事件

昨日历史系论文盖章,这意味着大学专业课已经与我渐行渐远,有点怀念上心头,大学太快了。和几个老师聊了会,有别离的时候会发现原来老师都是这么亲切。盖章的同时,青山打个电话说道:刚哥,给你说个好消息,咱们系...
  • a137151062
  • a137151062
  • 2014年03月13日 16:54
  • 23659
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:捕捉DataGrid的双击事件(C#版本)
举报原因:
原因补充:

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