[c#] Problem bei Drag&Drop mit Listbox und Dataset

BeaTBoxX

Erfahrenes Mitglied
Hallo zusammen,

hoffe hier bin ich richter als im Datenverwaltungs-Subforum.

Folgenes Problem:

Habe 2 Listboxes. Eine wird beim Laden mit Daten aus einer MySQL DB gefüttert.

Der Benutzer soll nun ausgewählte Items per Drag&Drop in die andere Listbox ziehen können.

Habe ein Beispiel gefunden, allerdings wird da wohl der Text(items) von hand im VS eingetragen. Das Beispiel funktioniert auch.

Mit meiner DB gefütterten Listbox allerdings nicht.
Liegt es daran, dass das Dataset , was ich verwende, mehrere Collumns hat?

Hiermit Fülle ich die ListBox:

Code:
            BindingSource bSource = new BindingSource();
            DataTable myDataTable;
            myDataTable = Datenbankklasse.ExecQry("SELECT `ArtikelNummer`,`Bezeichnung-lang`,`Bezeichnung-kurz`,`papierflaeche`,`provisionsrelevant` FROM best_artikel");
            bSource.DataSource = myDataTable;
            alle_artikel_listBox.DataSource = bSource;
            alle_artikel_listBox.DisplayMember = "Bezeichnung-kurz";

Folgenden Code habe ich zum Event abfeuern bei MouseDown in der QuellListbox:

Code:
 // index des selektierten Items holen
            int indexOfItem = alle_artikel_listBox.IndexFromPoint(e.X, e.Y);
            // prüfen ob Index korrekt
            if (indexOfItem >= 0 && indexOfItem < alle_artikel_listBox.Items.Count) // check we clicked down on a string
            {
                // DoDragDrop Event abfeuern
                alle_artikel_listBox.DoDragDrop(alle_artikel_listBox.Items[indexOfItem], DragDropEffects.Copy);
            }

Im DragDrop event habe ich folgendes:

Code:
listBox1.Items.Add(e.Data.GetData(DataFormats.Text));
Listbox 1 ist hierbei die ZielListbox.

Console sagt beim DragDropversuch:

Code:
Eine Ausnahme (erste Chance) des Typs "System.ArgumentNullException" ist in System.Windows.Forms.dll aufgetreten.

Kann mir jemand weiterhelfen, was da genau vor sich geht, und wie ichs behebe?

Vielen Dank!


Gruß
Frank
 
Zuletzt bearbeitet:
Problem gelöst:

Natürlich ist der Inhalt der selektierten Zeile kein Text, sondern ein DataRowView.
Wenn man ensprechend drauf zugreift, klappt das auch :)
Code:
            // index des selektierten Items holen
            int indexOfItem = alle_artikel_listBox.IndexFromPoint(e.X, e.Y);
            DataRowView row;
            // prüfen ob Index korrekt
            if (indexOfItem >= 0 && indexOfItem < alle_artikel_listBox.Items.Count) 
            {
                row = (DataRowView)alle_artikel_listBox.Items[indexOfItem];
                // DoDragDrop Event abfeuern                alle_artikel_listBox.DoDragDrop(row["Bezeichnung-kurz"],DragDropEffects.Copy);
            }
 

Neue Beiträge

Zurück