winform下datagrid双击问题 在winform下,我的程序现在只能靠点击datagrid 的窗体触发dataGrid1_DoubleClick(object sender, System.EventArgs e)事件,请问要怎么样才能在双击绑定到datagrid中的某一行数据的时候触发这个双击事件????请朋友们帮忙看看?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 选定一行.加上鼠标事件: 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()); }就这样就可以,触发双击事件, 首先,谢谢zhangliu_521(浪客)兄的代码,但是不知怎么的在点击datagrid的某行数据的时候就是触发不了DoubleClick这个事件 捕捉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)看看能不能得到, 以上朋友提到的方法都能办到,但是都是在点击datagrid这个控件本身的情况下,在点击绑定都他上面的数据时就不行了,我想的是在点击datagrid的某行数据的时候能触发,请朋友们在帮忙看看 Double_Click事件里,对当前活动的行或列进行处理不行吗? private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e){ System.Drawing.Point pt = new Point(e.X, e.Y); DataGrid.HitTestInfo hti = this.dataGrid1.HitTest(pt); if(hti.Type == DataGrid.HitTestType.Cell) { this.dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column); this.dataGrid1.Select(hti.Row); }}private void dataGrid1_DoubleClick(object sender, System.EventArgs e){ int row=this.dataGrid1.CurrentCell.RowNumber; MessageBox.Show(this.dataGrid1[row,0].ToString());}我是这样做的,可是还是只能点datagrid 控件的时候才能获取到值,点绑定到其中的数据确不能,为什么? this.dataGrid1.CurrentCell.RowNumberthis.dataGrid1.CurrentCell.ColumnNumber看看这两个属性能不能得到当前点击的行,列号。 bwguang(bwguang) 值是能用this.dataGrid1.CurrentCell.RowNumberthis.dataGrid1.CurrentCell.ColumnNumber获取的,在MouseUp事件中是能用这两个来获取值得但是在双击事件中不行,没有触发双击事件 二 捕获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) { gridMouseDownTime=DateTime.Now; //纪录时间 } private void TextBox_MouseDown(object sender,MouseEventArgs e) { if(DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime)) //如果两次单击的时间小于系统的双击时间,我们就把它认为是双击操作 { this.frmRoleRightShow(); } } 1、首先,双击cell根本不会触发你的DataGrid_DoubleClick事件,所以不要在这个地方费工夫了。2、取得当前行的语法是:DataRow currentRow = ((DataRowView)this.BindingContext[dataset_name, "datatable_name"].Current).Row;刚刚认真看了看DataGrid_DoubleClick事件. private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e) { DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(e.X, e.Y); if (hitTest.Type != DataGridViewHitTestType.Cell) { return; } MessageBox.Show("Clicked"); } 大家帮我改进下代码! C# 服务程序 编辑映射网络驱动器的文件,权限如何设置 c#关于winform配置文件读取的问题 怎么用C#语言编程 增加word书签 关于登录界面问题 在线--打印分页不成功(Windows) asp.net如何实现验证码 C#WinForm中把DataGrid控件导出到Excel里 如何让Validating事件在关闭窗时不触发?就正常关闭窗口了? 帮我看一下这个关于as的语句怎么回事(ClassType temp=MyArrayList[i] as ClassType;) 求一个 格式化的问题 如何把数字类型转换成日期型??
加上鼠标事件:
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());
}
就这样就可以,触发双击事件,
http://dotnet.aspx.cc/article/c83c3a4b-8571-4ce6-fbac-35dc28d14389/read.aspx
LZ可以直接用
private void imageShow_DoubleClick(object sender, System.EventArgs e)看看能不能得到,
{
System.Drawing.Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hti = this.dataGrid1.HitTest(pt);
if(hti.Type == DataGrid.HitTestType.Cell)
{
this.dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column);
this.dataGrid1.Select(hti.Row);
}
}private void dataGrid1_DoubleClick(object sender, System.EventArgs e)
{
int row=this.dataGrid1.CurrentCell.RowNumber;
MessageBox.Show(this.dataGrid1[row,0].ToString());
}我是这样做的,可是还是只能点datagrid 控件的时候才能获取到值,点绑定到其中的数据确不能,为什么?
this.dataGrid1.CurrentCell.ColumnNumber
看看这两个属性能不能得到当前点击的行,列号。
值是能用this.dataGrid1.CurrentCell.RowNumber
this.dataGrid1.CurrentCell.ColumnNumber获取的,在MouseUp事件中是能用这两个来获取值得
但是在双击事件中不行,没有触发双击事件
第一步:
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)
{
gridMouseDownTime=DateTime.Now; //纪录时间
}
private void TextBox_MouseDown(object sender,MouseEventArgs e)
{
if(DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
//如果两次单击的时间小于系统的双击时间,我们就把它认为是双击操作
{
this.frmRoleRightShow();
}
}
2、取得当前行的语法是:DataRow currentRow = ((DataRowView)this.BindingContext[dataset_name, "datatable_name"].Current).Row;刚刚认真看了看DataGrid_DoubleClick事件.
{
DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(e.X, e.Y); if (hitTest.Type != DataGridViewHitTestType.Cell)
{
return;
} MessageBox.Show("Clicked");
}