c#datagrid的每行的单击事件
需要一个帮助类
- using System;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Ink;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using System.Threading;
- namespace Common
- {
- public class MouseClickManager
- {
- public event MouseButtonEventHandler Click;
- public event MouseButtonEventHandler DoubleClick;
- private bool Clicked { get; set; }
- public Control Control { get; set; }
- public int Timeout { get; set; }
- public MouseClickManager(Control control, int timeout)
- {
- this.Clicked = false;
- this.Control = control;
- this.Timeout = timeout;
- }
- public void HandleClick(object sender, MouseButtonEventArgs e)
- {
- lock (this)
- {
- if (this.Clicked)
- {
- this.Clicked = false;
- OnDoubleClick(sender, e);
- }
- else
- {
- this.Clicked = true;
- ParameterizedThreadStart threadStart = new ParameterizedThreadStart(ResetThread);
- Thread thread = new Thread(threadStart);
- thread.Start(e);
- }
- }
- }
- private void ResetThread(object state)
- {
- Thread.Sleep(this.Timeout);
- lock (this)
- {
- if (this.Clicked)
- {
- this.Clicked = false;
- OnClick(this, (MouseButtonEventArgs)state);
- }
- }
- }
- private void OnClick(object sender, MouseButtonEventArgs e)
- {
- MouseButtonEventHandler handler = Click;
- if (handler != null)
- this.Control.Dispatcher.BeginInvoke(handler, sender, e);
- }
- private void OnDoubleClick(object sender, MouseButtonEventArgs e)
- {
- MouseButtonEventHandler handler = DoubleClick;
- if (handler != null)
- handler(sender, e);
- }
- }
- }
- <sdk:DataGrid Grid.Row="" AutoGenerateColumns="False" SelectionMode="Single" IsReadOnly="True" x:Name="dataGrid" LoadingRow="DataGrid_LoadingRow" />
- private readonly MouseClickManager _gridClickManager; //声明,需要引入上面定义的类
- this._gridClickManager = new MouseClickManager(this.dataGrid,);//实例化,并指向需要控制的空间名称(this.DataGrid).放在构造函数中
- this._gridClickManager.DoubleClick += new System.Windows.Input.MouseButtonEventHandler(_gridClickManager_DoubleClick);//委托双击事件.放在构造函数中
- void _gridClickManager_DoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e) //双击事件的实现
- {
- //doSomething();
- }
- private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e) //给表中的每一行加载双击事件
- {
- e.Row.MouseLeftButtonUp+=_gridClickManager.HandleClick;
- }
http://blog.csdn.net/bychentufeiyang/article/details/7066347
http://blog.csdn.net/haukwong/article/details/7077711
http://www.xuebuyuan.com/261369.html
c#datagrid的每行的单击事件的更多相关文章
- 在WPF的DataGrid中对行添加单击事件
在做的一个c#的项目中发现Datagrid没办法直接对鼠标单击进行响应,调用MouseDown事件也需要点击某一行第二次才能响应.所以借助EventSetter来简单的实现了一个. 界面部分的代码 & ...
- easyui datagrid editor checkbox 单击事件
Easyui datagrid treegrid中能够为行追加checkbox元素.比如: $('#tt').treegrid({ url:'get_data.php', idField:'id', ...
- Silverlight 利用DataGrid行加载事件动态控制行列显示
datagrid的绑定很好用,但有时候我们往往需要根据model内容来动态控制行或者列,该怎么办呢? 这时候,我们就需要用到行加载事件:在加载每一行数据的时候,根据数据的内容来控制相应的表格显示. 比 ...
- 扩展 easyui 控件系列:为datagrid 增加过滤行
此功能还为真正完成,起到抛砖引玉的效果,发动大家的力量把这个功能完善起来,效果图如下: 基本上就是扩展了 datagrid.view 中的onAfterRender 这个事件,具体代码如下: $.ex ...
- Android代码规范----按钮单击事件的四种写法
[前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...
- GridView中添加行单击事件.md
[toc] 1.使用说明 1.方法来源 该方法主要参考StackOverflow上面的答案和下面这篇文章 http://www.codeproject.com/Articles/15677/Click ...
- EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他
原创 : EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他 转载,请注明出处哦!谢谢! 原创 : EasyUI datagrid 明细表格中编辑框 事件绑 ...
- JS事件 鼠标单击事件( onclick )通常与按钮一起使用。onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件。同时onclick事件调用的程序块就会被执行
鼠标单击事件( onclick ) onclick是鼠标单击事件,当在网页上单击鼠标时,就会发生该事件.同时onclick事件调用的程序块就会被执行,通常与按钮一起使用. 比如,我们单击按钮时,触发 ...
- GridView点击行触发SelectedIndexChanged事件
1.在<% @Page ...... %>指令中添加 EnableEventValidation="false" 2.在RowDataBound事件中添加 protec ...
随机推荐
- YUI Array 之some(检测|any)
YUI原码 YUI someYArray.some = Lang._isNative(Native.some) ? function (array, fn, thisObj) { return Nat ...
- php中12个魔术方法
本文列举了php面向对象当中12个魔术方法,并对此进行一一详细介绍,希望对新手有所帮助. 1.构造方法: __construct() 参数:自定义 触发时机:new的一瞬间自动调用 作用:初始化成员属 ...
- 用IO流拷贝歌曲
package lianxi; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...
- javascript string对象的属性与方法
一 创建string对象 new string('string'); 更直接的定义方法是var str = 'string'; 二 string属性 1.constructor 2.lenght 字符 ...
- jQuery插件之Form
一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize() 用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.cl ...
- g++ error: expected nested-name-specifier before 'XXX'
template <typename addrT=int,typename valuT=int,typename stream_addrT=bm_addr,typename stream_siz ...
- 使用sp_configure启用 'Ad Hoc Distributed Queries'
使用sp_configure启用 'Ad Hoc Distributed Queries' 原文地址:http://blog.sina.com.cn/s/blog_531bb7630100xh88.h ...
- ubuntu查看硬件信息
1,外部探针probe sudo apt-get install hwinfo 执行hwinfo获取系统信息 --short
- linux 安装gcc和g++
linux中安装gcc和g++ 今天在linux的服务器上安装C/C++的编译器gcc和g++,运行了如下两条命令: 1 yum install gcc yum install g++ 然后发现gcc ...
- [每日一题] 11gOCP 1z0-052 :2013-09-25 Lock ――for update.................................C23
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/12021587 正确答案:ABE 这道题需要我们了解锁的知识点. TM锁的模式: 0-Non ...