Devexpress GridView疯狂的MouseDown事件

本文关键字:MouseDown 事件 疯狂 GridView Devexpress | 更新日期: 2023-09-27 18:12:30

当我实现GridView的MouseDown事件时,在我点击GridView内的任何内容后,我的程序开始疯狂并开始将屏幕上的所有内容视为GridView,在我点击的任何地方调用MouseDown事件。我不太确定为什么会这样,但我发现了这个代码片段:

    GridHitInfo downHitInfo = null;
    private void view_MouseDown(object sender, MouseEventArgs e)
    {
        GridView view = sender as GridView;
        downHitInfo = null;
        GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y));
        if (Control.ModifierKeys != Keys.None) return;
        if (e.Button == MouseButtons.Left && hitInfo.RowHandle >= 0)
            downHitInfo = hitInfo;
    }

阻止了这一点。然而,我仍然不确定为什么这可以防止这种疯狂。如有任何想法,欢迎指教

Devexpress GridView疯狂的MouseDown事件

可能是因为事件已经在表单上注册了…不是gridcontrol

您可能应该检查命中是否在使用hitInfo.InRowCell的行中的单元格中,如下所示:

GridView view = sender as GridView;
GridHitInfo hitInfo = view.CalcHitInfo(new Point(e.X, e.Y));
// Verify that the click was in a cell of a row, if not, don't do anything
if (!hitInfo.InRowCell)
    return;

PS:你可以用e.Location代替新建一个点new Point(e.X, e.Y)

GridHitInfo hitInfo = view.CalcHitInfo(e.Location);