C# DataGridView verliert Mehrfachselektion bei Drag&Drop

Dabei seit
Mai 2007
Beiträge
149
Hallo,

Ich habe folgendes Problem: Wenn ich in einem DataGridView mit Shift mehrere Einträge auswähle, und dann ein Drag&Drop beginne, ist nach dem drücken der Maustaster nur noch die Zeile selektiert, auf dem das Drag&Drop gestartet wurde, und nicht mehr die Mehrfachselektion. Woran kann das liegen? Hier mal das MouseMove Event:

Code:
        private void data_view_MouseMove(object sender, MouseEventArgs e)
        {
            if (Control.MouseButtons == MouseButtons.Left)
            {
                DataGridView a = sender as DataGridView;
                if (a.SelectedRows.Count > 0)
                {
                    string[] fileList = new string[a.SelectedRows.Count];
                    for (int i = 0; i < a.SelectedRows.Count; i++)
                    {
                        fileList[i] = mymusic + "\\" + a.SelectedRows[i].Cells[5].Value.ToString();
                    }
                    a.DoDragDrop(new DataObject(DataFormats.FileDrop, fileList), DragDropEffects.Copy);
                    a.DoDragDrop(a.SelectedRows, DragDropEffects.Copy);
                }
            }
        }
Es gibt auch noch ein MouseDown Event, das habe ich allerdings auskommentiert und der Fehler tritt weiter auf.

Für eine Hilfe wäre ich sehr dankbar ;-)
 

M0rpHeU5

Lieutenant
Dabei seit
Jan. 2011
Beiträge
783
Wie wäre es wenn du dich auf das Event "OnDragDrop" anstelle MouseMove abonnieren würdest?

Hier würde ich erwarten das in den EventArgs eine Collection der Objekte steckt;

Die Antwort war Blind herausgehauen, also ohne Gewähr;
 

holy

Lieutenant
Dabei seit
Aug. 2008
Beiträge
533
Das MouseMove ist schon richtig. Das Problem ist, dass SelectionChanged durch OnMouseDown ausgelöst wird.
Die einzige Chance, die du hast dieses Verhalten zu ändern ist von DataGridView abzuleiten und OnCellMouseDown, OnCellMouseUp und OnMouseDown zu überschreiben.
 
Top