Событие CellDoubleClick не работает после добавления Drag & Drop - PullRequest
0 голосов
/ 26 июня 2010

После добавления перетаскивания в DataGridView событие CellDoubleClick перестало работать. В событии CellMouseDown у меня есть следующий код:

private void dataGridView2_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    var obj = dataGridView2.CurrentRow.DataBoundItem;
    DoDragDrop(obj, DragDropEffects.Link);
}

Как мне исправить это, чтобы включить событие CellDoubleClick?

1 Ответ

2 голосов
/ 26 июня 2010

Да, это не может работать. Вызов DoDragDrop () превращает управление мышью в логику Windows D + D, что мешает нормальной работе мыши. Вам нужно отложить запуск D + D, пока вы не увидите, что пользователь действительно перетаскивает. Это должно решить проблему:

    Point dragStart;

    private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) {
        if (e.Button == MouseButtons.Left) dragStart = e.Location;
    }

    private void dataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e) {
        if (e.Button == MouseButtons.Left) {
            var min = SystemInformation.DoubleClickSize;
            if (Math.Abs(e.X - dragStart.X) >= min.Width ||
                Math.Abs(e.Y - dragStart.Y) >= min.Height) {
                // Call DoDragDrop
                //...
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...