C# Devexpress GridView疯狂鼠标下移事件

C# Devexpress GridView疯狂鼠标下移事件,c#,gridview,devexpress,mousedown,C#,Gridview,Devexpress,Mousedown,当我实现GridView的MouseDown事件时,当我单击GridView中的任何内容后,我的程序就会发疯,开始将屏幕上的所有内容都视为GridView,无论我在哪里单击,都会调用MouseDown事件。我不确定它为什么会这样做,但我发现了以下代码片段: GridHitInfo downHitInfo = null; private void view_MouseDown(object sender, MouseEventArgs e) { GridV

当我实现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;

    }

这就阻止了这一点。然而,我仍然不确定为什么这可以防止这种疯狂。如果您对正在发生的事情有任何想法,我们将不胜感激。

可能是因为该活动已登记在表单上。。。不是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;
备注:您可以使用
e.Location
而不是创建新点
新点(e.X,e.Y)


MouseDown事件在没有提供代码段的情况下按预期工作。我使用的是DX版本12.2.7.0。你用的是哪个版本?你描述的行为很奇怪,所有关于其原因的想法都只是想法。如果你想得到确切的答案,你应该在上注册这个问题(带有样本),而不是把它贴在上面。不,不是这样的,但可能是在那里注册的。好吧,你描述的行为与此一致。正如Rok评论的那样,这不是devex网格的正常行为。
GridHitInfo hitInfo = view.CalcHitInfo(e.Location);