关于事件DataGrid (窗体程序),高手请进 这个问题很急啊 一直没解决

时间:2022-06-27 16:15:03
当我 双击 DataGrid 控件(窗体程序) 的单元格 触发事件 

注意:是双击,而不是单击

请问怎么才可以实现呢?我只知道有单击触发事件,我现在需要双击触发事件

请高手指教一下  小弟万分感谢

13 个解决方案

#1


http://blog.csdn.net/ChengKing/archive/2006/01/03/568966.aspx

#2


ChengKing(Enthusiasm Bigrosoft) 

非常感谢你 给的指点

但是问题依然没有解决

我要的是双击事件啊

#3


先選中dataGrid1,再點屬性那里的那個閃電那個標志,見到DoubleClick,點點它啦!!^_^

#4


winform还是webform阿

#5


webform就是这样子
public void datagrid1_ItemDataBound(Object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem) || (e.Item.ItemType == ListItemType.SelectedItem))
{
e.Item.Attributes.Add("ondblclick", "javascript: alert("Double click");");
}
}

#6


這個問題實際很簡單,以前問過,隻要注意到一點,當第一次click時點擊算的是單擊datagrid,第二次click時已經進入到datagridtext,所以還是單擊,弄清這個就簡單了。

#7


是winform程序

高手能指点一下迷津吗?

#8


DataGrid拥有双击事件,而且可以在双击事件处理程序里面获取双击的是哪一个单元格,lz不用强求单元格的双击事件

#9


楼上正解

#10


to:yohn_jack(阿布) 
   我感觉想你说的那样做不出来,如果可以请给出事例好么?
我是在定义表格样式时,加载MouseDown 事件来获取双击时间实现的!
例:
private DateTime gridMouseDownTime;//记录事件,确定鼠标是双击表格还是选中一个单元
private void Form_load(object sender,EventArgs e)

......
  DGrid1.DataSource=newTable;
  DataGridTableStyle ts=new DataGridTableStyle();
  DataGridTextBoxColumn aTextColumn=new DataGridTextBoxColumn();
  aTextColumn.TextBox.MouseDown+=new MouseEventHandler(TextBoxMouseDownHandle);
  .......
}
private void TextBoxMouseDownHandle(object sender,MouseEventArgs e)
{
  if(e.Button==MouseButtons.Left && e.Click==2 ||
     DateTime.Now<gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
{
 //你要触发的事件
}
  
}



#11


.net 自带的datagrid控件功能太弱,有一点需求就要求对该控件写很多代码,建议使用第三方控件:如ComponentOne,Janus,Infragistics他们的表格控件都很强大.可以把精力多放在系统框架和业务逻辑上.

#12


yohn_jack(阿布) 一句话惊醒梦中,不好意思 其实都怪我不爱动脑袋哈,逻辑出现问题了

当我把我要触发的事情,放在datagrid  Double click  得到我想要的东西
 
peak_weng(山峰) 或许你的可以实现,我暂时没去做,我看了一下 觉得你提供的方案也很好,
同时也想我学到了很多东西  谢谢 你给出完整的代码

#13


虽然datagrid  Double click  实现我的要求  但是感觉有漏洞哈

排序的时候,如果点快了 形成双击

就会执行双击事件,不知道那位高手 有别的见解

#1


http://blog.csdn.net/ChengKing/archive/2006/01/03/568966.aspx

#2


ChengKing(Enthusiasm Bigrosoft) 

非常感谢你 给的指点

但是问题依然没有解决

我要的是双击事件啊

#3


先選中dataGrid1,再點屬性那里的那個閃電那個標志,見到DoubleClick,點點它啦!!^_^

#4


winform还是webform阿

#5


webform就是这样子
public void datagrid1_ItemDataBound(Object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 
{
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem) || (e.Item.ItemType == ListItemType.SelectedItem))
{
e.Item.Attributes.Add("ondblclick", "javascript: alert("Double click");");
}
}

#6


這個問題實際很簡單,以前問過,隻要注意到一點,當第一次click時點擊算的是單擊datagrid,第二次click時已經進入到datagridtext,所以還是單擊,弄清這個就簡單了。

#7


是winform程序

高手能指点一下迷津吗?

#8


DataGrid拥有双击事件,而且可以在双击事件处理程序里面获取双击的是哪一个单元格,lz不用强求单元格的双击事件

#9


楼上正解

#10


to:yohn_jack(阿布) 
   我感觉想你说的那样做不出来,如果可以请给出事例好么?
我是在定义表格样式时,加载MouseDown 事件来获取双击时间实现的!
例:
private DateTime gridMouseDownTime;//记录事件,确定鼠标是双击表格还是选中一个单元
private void Form_load(object sender,EventArgs e)

......
  DGrid1.DataSource=newTable;
  DataGridTableStyle ts=new DataGridTableStyle();
  DataGridTextBoxColumn aTextColumn=new DataGridTextBoxColumn();
  aTextColumn.TextBox.MouseDown+=new MouseEventHandler(TextBoxMouseDownHandle);
  .......
}
private void TextBoxMouseDownHandle(object sender,MouseEventArgs e)
{
  if(e.Button==MouseButtons.Left && e.Click==2 ||
     DateTime.Now<gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
{
 //你要触发的事件
}
  
}



#11


.net 自带的datagrid控件功能太弱,有一点需求就要求对该控件写很多代码,建议使用第三方控件:如ComponentOne,Janus,Infragistics他们的表格控件都很强大.可以把精力多放在系统框架和业务逻辑上.

#12


yohn_jack(阿布) 一句话惊醒梦中,不好意思 其实都怪我不爱动脑袋哈,逻辑出现问题了

当我把我要触发的事情,放在datagrid  Double click  得到我想要的东西
 
peak_weng(山峰) 或许你的可以实现,我暂时没去做,我看了一下 觉得你提供的方案也很好,
同时也想我学到了很多东西  谢谢 你给出完整的代码

#13


虽然datagrid  Double click  实现我的要求  但是感觉有漏洞哈

排序的时候,如果点快了 形成双击

就会执行双击事件,不知道那位高手 有别的见解