ListBox.DataSource

Klobow

Mitglied
Hallo zusammen,

hab da ein kleines Problem mit List/Comboboxen,

habe ein mehrere Objekte ("Employee") in einer ArrayList gespeichert.
Jedes Objekt entählt die Attribute "Fullname" und "PersNumber".

Nun weise ich diese Array einer ListBox zu:

ListBox1.DataSource = ArrayList;

nun noch DisplayMember und ValueMember festlegen:

ListBox1.DisplayMember = "FullName";
ListBox1.ValueMember = "PersNumber";

Jetzt wird die ListBox richtig angezeigt und auch eine Überprüfung
mit dem Debugger ergab die richtigkeit der Values.

Wenn ich jetzt aber aber den ValueMember der markiert ist abfragen
will

string _value = ListBox1.SelectedValue.ToString();

dann bekomme ich immer den Index von der Stelle an der das Objekt seht
und nicht den entsprechenden Value. Kann mir jemand sagen wie ich meinem
string _value die entsprechende PersNumber des selectierten namens bekomme?

Danke im Vorraus

Gruß
Klobos
 
Also ich greife über den Index auf das ganze Objekt zu. Dies muß natürlich gecastet werden. Anschleißend kann du die entsprechende Eigenschaft auslesen.

Objekt selected = (Objekt ) listbox.Items[listbox.SelectedIndex];
 
Hallo,

erstamal danke für deine Antwort,

aber wenn ich es so mache wie du mir es beschrieben hast, dann hab
ich doch den kompletten Vorteil den mit das ValueMember bietet verloren
oder?!


gruß
Klobow
 
Hallo,

Was hat denn ValueMember für Vorteile? Ich sehe keinen. Überschreib doch einfach bei deinem Employee die ToString() und geb da den FullName aus. Wenn du dir dann mit dem Index den selektierten Angestellten holst, hast du ja automatisch wieder alle Informationen zur Verfügung.

Gruss Alexander
 

Neue Beiträge

Zurück