当我实现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;
}
阻止了这一点。但是,我仍然不确定为什么这会阻止这种疯狂。任何有关正在发生的事情的想法都值得赞赏
答案 0 :(得分:0)
可能是因为事件已在表单上注册...而不是gridcontrol
答案 1 :(得分:0)
您应该使用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);