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 ...
随机推荐
- Python学习笔记1(基础语法)
1.Python的文件类型: 源代码:扩展名以py结尾.python写的程序不需要编译成二进制代码,可以直接运行.pyw是Windows下开发图形界面的源文件. 字节代码:扩展名以pyc结尾,是编译过 ...
- hdu 1042 N!(高精度乘法)
Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in ...
- HTTP协议入门知识
HTTP超文本传输协议,是客户端浏览器和服务器通信的规范,是浏览器与服务器通信的协议,属于应用层的协议,web开发者了解HTTP协议非常重要.浏览器通过http协议请求服务器,完成请求服务器立刻关闭连 ...
- cobbler之详细配置
目录 作用 组件 命令 安装过程 安装包 配置文件 启动cobbler服务 配置cobbler服务 使用cobbler_web 作用:系统自动化安装,支持lin ...
- postgresql创建用户
(1)内部命令create user 用户名 with superuser password '密码'; 先进入数据库后用命令\h create user 查看帮助 ...
- javascript string对象的属性与方法
一 创建string对象 new string('string'); 更直接的定义方法是var str = 'string'; 二 string属性 1.constructor 2.lenght 字符 ...
- C# is 与 as 运算符
as运算符有一定的适用范围,它只适用于引用类型或可以为null的类型,而无法执行其他的转换,如值类型的转换以及用户自定义的类型转换,这类转换应该适用强制转换表达式来执行.as当转换不了的时候返回nul ...
- Fragment与Activity相互传递数据:
Activity向Fragment传递数据:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法即可将Bundle数据包传给F ...
- Spring Task Scheduler - No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined
1. Overview In this article, we are discussing the Springorg.springframework.beans.factory.NoSuchBea ...
- 获取nginx ip地理信息
filter { grok { match => { "message" => "%{IPORHOST:clientip} \[%{HTTPDATE:time ...