Wie ahme ich das Windows Explorer-Verhalten bei Mehrfachauswahl / Ziehen und Ablegen in einer DataGridView nach?

Ich versuche, die Art und Weise zu imitieren, in der Windows Explorer die Mehrfachauswahl behandelt. In einer DataGridView-Standardeinstellung können Sie mit gedrückter Strg-Taste mehrere Elemente auswählen. Wenn Sie jedoch die Strg-Taste loslassen und dann versuchen, die ausgewählten Elemente per Drag & Drop zu verschieben, werden die ausgewählten Elemente gelöscht und nur die Trefferzeile ausgewählt. Ich habe die folgende Lösung irgendwo online gefunden.

protected override OnMouseDown(MouseEventArgs e)
{
  int hitRowIndex = HitTest(e.X, e.Y).RowIndex;
  if(!SelectedRows.Contains(Rows[hitRowIndex]))
  {
    base.OnMouseDown();
  }
}

Dies verursacht jedoch andere Nebenwirkungen. Wenn Sie die STRG-Taste gedrückt halten und mit der Maus auf ein ausgewähltes Objekt klicken, bleibt das Objekt ausgewählt. Dies ist sinnvoll, da das Maus-Down-Ereignis umgangen wird, wenn die angeklickte Zeile ausgewählt ist. Betrachtet man das Verhalten von Windows Explorer, sieht es so aus, als würde die Abwahl eines Elements mit gehaltener STRG-Taste erst nach dem MouseUp-Ereignis behandelt. Hat jemand versucht, dies zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage