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

Другие вопросы по тегам