如何禁用双击DataGridView的标题

时间:2016-10-26 17:25:38

标签: c# winforms datagridview

我想在双击Gridview(行)而不是单个单元格时做一些事情。意味着双击事件处理程序不在MouseDoubleClick事件上。但我无法禁用标题列和行双击事件..并且当我双击GridView行时,还想将数据加载到组合框(ComboBox在同一窗体上)。请帮帮我.. !!!

private void gvLoadAllData_DoubleClick(object sender, EventArgs e)
{
    if()
    {
        //Do Something
    }
}

4 个答案:

答案 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}}