winform下datagrid双击问题
在winform下,我的程序现在只能靠点击datagrid 的窗体触发dataGrid1_DoubleClick(object sender, System.EventArgs e)事件,请问要怎么样才能在双击绑定到datagrid中的某一行数据的时候触发这个双击事件????请朋友们帮忙看看?谢谢
------解决方案--------------------在生成数据行的时候重新绑定事件——其实没有必要,直接操作有什么不好呢??
而且代码简单,操作方便的
------解决方案--------------------选定一行.
加上鼠标事件:
private void imageShow_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
System.Drawing.Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hti = this.imageShow.HitTest(pt);
if(hti.Type == DataGrid.HitTestType.Cell)
{
this.imageShow.CurrentCell = new DataGridCell(hti.Row, hti.Column);
this.imageShow.Select(hti.Row);
}
}
鼠标双击事件:
private void imageShow_DoubleClick(object sender, System.EventArgs e)
{
// int y = imageShow.CurrentCell.ColumnNumber;
int x = imageShow.CurrentCell.RowNumber;
MessageBox.Show(imageShow[x,0].ToString());
}
就这样就可以,触发双击事件,
------解决方案--------------------在生成数据行的时候重新绑定事件——其实没有必要,直接操作有什么不好呢??
而且代码简单,操作方便的
------解决方案--------------------LS两为说得也是,,,不用绑定...
------解决方案--------------------捕捉DataGrid的双击事件
http://dotnet.aspx.cc/article/c83c3a4b-8571-4ce6-fbac-35dc28d14389/read.aspx
------解决方案--------------------其实private void imageShow_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
是一章眼法...
LZ可以直接用
private void imageShow_DoubleClick(object sender, System.EventArgs e)
看看能不能得到,
------解决方案--------------------Double_Click事件里,对当前活动的行或列进行处理不行吗?
------解决方案--------------------程序没有问题的啊
LZ把双击事件改为其他的试试..
是不是出了什么问题
------解决方案--------------------this.dataGrid1.CurrentCell.RowNumber
this.dataGrid1.CurrentCell.ColumnNumber
看看这两个属性能不能得到当前点击的行,列号。
------解决方案--------------------二 捕获DataGrid里的双击事件,本来很简单的问题,可是如果你只对DataGrid的DoubleClicked里写程序的话,你就会发现一个问题,在DataGrid的cell里双击时没有反应,这是因为在DataGrid里有TextBox组成,所以你就需要捕获TextBox的DoubleClicked事件,但你完成这一步时,看看效果咋样,如果你仔细的话,你就又会发现一个问题,当光标还没有在一个单元格时,双击该单元格,发现了什么?没有任何反应,明明双击了吗,为啥呢?这是因为DataGrid把这个双击操作分解了,分为两个单击,第一个使该单元格获得光标,第二个为单击事件,所以你的双击就没有反应了,所以我们要做的就是把这个动作当作双击事件来处理,这样就达到我们的目的了。所以捕获一个双击事件就要做三件事。下面是一段代码。
第一步:
private void dgRole_DoubleClick(object sender,System.EventArgs e)
//dgRole为DataGrid
{
this.frmRoleRightShow(); //我们双击要做的事
}
第二步:
private void TextBox_DoubleClick(object sender,System.EventArgs e)
{
this.frmRoleRightShow();
}
第三步:
DateTime gridMouseDownTime;
private void dgRole_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
{