我想在双击Gridview(行)而不是单个单元格时做一些事情。意味着双击事件处理程序不在MouseDoubleClick事件上。但我无法禁用标题列和行双击事件..并且当我双击GridView行时,还想将数据加载到组合框(ComboBox在同一窗体上)。请帮帮我.. !!!
private void gvLoadAllData_DoubleClick(object sender, EventArgs e)
{
if()
{
//Do Something
}
}
答案 0 :(得分:5)
我已经定义了CellDoubleClick
事件并做了一些事情,我的问题是双击标题会触发该事件,从而导致应用程序崩溃。
考虑Disaster's idea,我刚刚添加了以下内容来解决该事件。
if (e.RowIndex == -1)
return;
答案 1 :(得分:2)
行上的广告标题
要处理双击行标题,请处理DataGridView
的{{3}}事件:
private void dataGridView1_RowHeaderMouseDoubleClick(object sender,
DataGridViewCellMouseEventArgs e)
{
var rowIndex = e.RowIndex;
//You handled a double click on row header
//Do what you need
}
列表标题上的DoubleClick
要处理双击DataGridView
RowHeaderMouseDoubleClick
事件
private void dataGridView1_ColumnHeaderMouseDoubleClick(object sender,
DataGridViewCellMouseEventArgs e)
{
var columnIndex = e.ColumnIndex;
//You handled a double click on column header
//Do what you need
}
使用DoubleClick
此外,如果您因任何原因想要使用DoubleClick
事件,请写下以下内容:
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
var g = sender as DataGridView;
if (g != null)
{
var p = g.PointToClient(MousePosition);
var hti = g.HitTest(p.X, p.Y);
if (hti.Type == DataGridViewHitTestType.ColumnHeader)
{
var columnIndex = hti.ColumnIndex;
//You handled a double click on column header
//Do what you need
}
else if (hti.Type == DataGridViewHitTestType.RowHeader)
{
var rowIndex = hti.RowIndex;
//You handled a double click on row header
//Do what you need
}
}
}
答案 2 :(得分:0)
这样做:
private void itemsList_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex>-1)
HereIsNotHeader();
}
并将其绑定到CellDoubleClick
事件
答案 3 :(得分:0)
这个怎么样?只有在datagridcell上触发doubleclick事件时才会触发该事件,而不是标题或空白(滚动条)时触发。
{{1}}