Да, это не может работать. Вызов 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
//...
}
}
}