Я не смог найти хорошего ответа на это, хотя, похоже, это часто встречающаяся проблема. Поэтому я использовал ответ Гбианки следующим образом:
public bool DraggingFromFileLinkDGV { get; set; }
void grdFiles_MouseDown(object sender, MouseEventArgs e)
{
this.DraggingFromFileLinkDGV = true;
}
void grdFiles_MouseLeave(object sender, EventArgs e)
{
this.DraggingFromFileLinkDGV = false;
}
void grdFiles_DragDrop(object sender, DragEventArgs e)
{
// Avoid DragDrop's on jittery DoubleClicks
if (this.DraggingFromFileLinkDGV) return;
// Your DragDrop code here ...
}
Теперь я действительно сделал это специально для предотвращения "блуждающих" двойных щелчков, когда мышь немного перемещается между двойными щелчками. Это предотвращает двойные щелчки, регистрирующиеся как перетаскиваемые объекты, а также отвечает на вопрос ОП.
Имейте в виду, это не работает 100% времени. По-видимому, некоторые события «потеряны» в 1 из 20 случаев. Я не определил, что именно меняется в тех ситуациях, когда он регистрирует каплю на себя. В случае предотвращения двойного щелчка, регистрируемого как перетаскивание, 95% достаточно, потому что он только что был установлен, чтобы избежать раздражения. Если вам нужно что-то, что на 100% эффективно, вам, возможно, придется попробовать что-то еще или выяснить, почему это не работает в этих нескольких случаях.