首先我们得弄明白WinForm中DataGrid的结构,可参考henry韩博士的相关文章,如:http://dev.csdn.net/develop/article/15/15686.shtm
 
 
 
3、 TextCol.TextBox.DoubleClick +=new EventHandler(TextBoxDoubleClickHandler);
private void TextBoxDoubleClickHandler(object sender, EventArgs e)
{
this.ShowCustomersDetail();
}
同时把上面的三个工作都做完了,也就实现了winform datagrid的双击啦。
参考:http://www.microsoft.com/china/community/Column/14.mspx
 
    不过,即便你不看也没关系,这里简单解释一下,WinForm每个Cell默认填充一个TextBox,双击时的第一次单击点在DataGrid上,同时使TextBox获得了焦点,下一次单击结果就点到TextBox上去了,所以也就能理解为什么直接写DataGrid的双击事件只有点在行头或Cell中间才会有用了吧。
    那怎么解决呢,有了理论基础,解决起来就很简单了,这里有三种情况:1、点在行头或cell间,直接写双击就好了;2、第一下点在DataGrid上,第二下点在TextBox上;3、TextBox之前已经被选中,两下都点在他上面。
    方案如下:
1、this.dataGridProjDetail.DoubleClick +=new EventHandler(dataGridProjDetail_DoubleClick)
//双击
private void dataGridProjDetail_DoubleClick(object sender, EventArgs e)
{
this.ShowCustomersDetail();
}
2、判断点在DataGrid上的Mouse Down和Text Box上的Mouse Up间的时间间隔是否可以被当作双击
this.dataGridProjDetail.MouseUp +=new MouseEventHandler(dataGridProjDetail_MouseUp);
TextCol.TextBox.MouseDown +=new MouseEventHandler(TextBoxMouseDownHandler);
  
private void dataGridProjDetail_MouseUp(object sender, MouseEventArgs e)
{
time = DateTime.Now;
}
//判断下时间间隔
private void TextBoxMouseDownHandler(object sender, MouseEventArgs e)
{
if(DateTime.Now < time.AddMilliseconds(SystemInformation.DoubleClickTime))
{
this.ShowCustomersDetail();
}
}
1、this.dataGridProjDetail.DoubleClick +=new EventHandler(dataGridProjDetail_DoubleClick)
//双击
private void dataGridProjDetail_DoubleClick(object sender, EventArgs e)
{
this.ShowCustomersDetail();
}
2、判断点在DataGrid上的Mouse Down和Text Box上的Mouse Up间的时间间隔是否可以被当作双击
this.dataGridProjDetail.MouseUp +=new MouseEventHandler(dataGridProjDetail_MouseUp);
TextCol.TextBox.MouseDown +=new MouseEventHandler(TextBoxMouseDownHandler);
private void dataGridProjDetail_MouseUp(object sender, MouseEventArgs e)
{
time = DateTime.Now;
}
//判断下时间间隔
private void TextBoxMouseDownHandler(object sender, MouseEventArgs e)
{
if(DateTime.Now < time.AddMilliseconds(SystemInformation.DoubleClickTime))
{
this.ShowCustomersDetail();
}
}
3、 TextCol.TextBox.DoubleClick +=new EventHandler(TextBoxDoubleClickHandler);
private void TextBoxDoubleClickHandler(object sender, EventArgs e)
{
this.ShowCustomersDetail();
}
同时把上面的三个工作都做完了,也就实现了winform datagrid的双击啦。
参考:http://www.microsoft.com/china/community/Column/14.mspx
                    
                
                
            
        
浙公网安备 33010602011771号