【问题标题】:Avoid double click event from being fires when clicked between column resize regions避免在列调整大小区域之间单击时触发双击事件
【发布时间】:2020-04-14 04:43:42
【问题描述】:

我有一个包含几列的 DataGridView。每次加载网格时,我都会默认选择一行。所以每当我双击任何一行时,Double Click 事件中的代码都会被执行。

现在,当我将鼠标悬停在列标题之间时,鼠标光标会发生变化,我可以开始调整列的大小。但是,每当我在同一个区域双击时,双击事件就会触发并且其中存在的代码会执行。

所以我无法在代码中验证,如果我双击行或列调整大小区域,如何区分。

请帮助我找到解决此问题的方法。谢谢!!

【问题讨论】:

  • xxxDoubleClick 提供了许多DataGridView 事件,您可能应该订阅一个(或多个)最适合您要执行的操作的事件。例如CellDoubleClickCellContentDoubleClickRowHeaderMouseDoubleClick
  • 尝试检查 MouseEventArgs!!

标签: c# datagridview resize double-click


【解决方案1】:

确保双击事件中的 RowIndex 不等于 -1。

if(e.RowIndex !=-1) { // your code }

【讨论】:

  • 不幸的是DataGridView的双击EventArgs没有可用的RowIndex属性。您能否建议任何其他解决方法?
【解决方案2】:

我只是使用下面显示的检查来避免双击任一列标题/分隔符时双击触发。这对我有用。

    private void dgvConnections_DoubleClick(object sender, EventArgs e)
    {
                //Ensure the double click isn't firing when the mouse is clicked anywhere over the column headers/ column separators. 
                DataGridView.HitTestInfo hit = dgvConnections.HitTest(((MouseEventArgs)e).X, ((MouseEventArgs)e).Y);
                if (hit.RowIndex == -1)
                    return;
        //my code here, which should run on double click
    }

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多