Ich schreibe eine Winforms-App, in der ein Benutzer ein Element aus einer Listbox auswählt und einige Daten bearbeitet, die Teil eines zugeordneten Objekts sind. Die Änderungen werden dann von der Objektliste auf eine zugrunde liegende Datei angewendet.Wie bekomme ich den "Schlüssel" des Listbox-Elements in der C# winforms App?
In ASP.Net zuweisen einen anderen Systemwert zu einem Listenelement als der angezeigte Text ist der Benutzer trivial. In einer winforms App müssen Sie das "Displaymember" und das "ValueMember" jedes Elements in einem etwas komplizierteren (und nicht oft im Internet verwandten) Prozess einstellen.
Das habe ich getan. Im Debug-Modus habe ich bestätigt, dass jedes Element jetzt einen Wert hat, der das Anzeigeelement ist (eine "freundliche" Zeichenfolge, die der Benutzer sieht) und einen Schlüssel, das valueMember, das den Schlüssel zu einem Hashtable-Objekt enthält, in dem die Daten aktualisiert werden existiert.
Wenn also ein Benutzer eine Zeichenfolge zur Bearbeitung auswählt, sollte das Programm den "Schlüssel" an die Hashtabelle übergeben, das Objekt herausziehen und die Bearbeitung darauf erlauben.
Der Haken?
Ich kann keine offensichtliche Weise sehen, dass das Programm den ValueMember des Elements betrachten soll. Ich habe naiv erwartet, dass es die "SelectedValue" -Eigenschaft der Listbox auffüllt, aber das wäre bei weitem zu einfach. Wie zum Teufel komme ich zum Listenwert?
Haben Sie die DataSource-Eigenschaft festgelegt? – Phaedrus
tat ich nicht, aber ich wollte nur eine schnelle Probe zusammenstellen. Ich nahm (falsch?) An, dass der SelectedValue gesetzt würde, unabhängig davon, woher die Daten kamen. – Andy