Devexpress GridView сумасшедшее событие MouseDown
Когда я реализую событие MouseDown в GridView, после того, как я щелкну что-нибудь внутри 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;
}
что предотвращает это. Однако я все еще не совсем уверен, почему это предотвращает это безумие. Любые идеи о том, что происходит, приветствуются
2 ответа
Вы, вероятно, должны проверить, было ли попадание в ячейку строки, используя 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);
Вероятно, потому что событие зарегистрировано в форме... не gridcontrol