代码之家  ›  专栏  ›  技术社区  ›  Marco Bettiolo

防止双击行分隔符触发单元格双击事件

  •  0
  • Marco Bettiolo  · 技术社区  · 15 年前

    在rowheaders visibility设置为false且allowUserToResizeRow设置为true的DataGridView中,如果在行分隔符上双击,则需要防止触发CellDoubleClick事件(当光标位于分隔符上时,行大小的ToubleClick箭头可见)。

    谢谢

    1 回复  |  直到 15 年前
        1
  •  4
  •   serge_gubenko    15 年前

    我想最简单的方法是检查CellDoubleClick事件本身上网格的单击区域;逻辑是在单击RowResizeTop或RowResizeBottom区域时返回,否则继续处理。有关详细信息,请查看下面的示例:

    private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
        // get mouse coordinates
        Point mousePoint = dataGridView1.PointToClient(Cursor.Position);
        DataGridView.HitTestInfo hitTestInfo = dataGridView1.HitTest(mousePoint.X, mousePoint.Y);
        // need to use reflection here to get access to the typeInternal field value which is declared as internal
        FieldInfo fieldInfo = hitTestInfo.GetType().GetField("typeInternal", 
            BindingFlags.Instance | BindingFlags.NonPublic);
        string value = fieldInfo.GetValue(hitTestInfo).ToString();
        if (value.Equals("RowResizeTop") || value.Equals("RowResizeBottom"))
        {
            // one of resize areas is double clicked; stop processing here      
            return;
        }
        else
        {
            // continue normal processing of the cell double click event
        }
    } 
    

    希望这有帮助,问候