Kann man (und wenn ja --> wie?) an einen Eintrag in einer Combobox ein Tag hängen?
Die ComboBox als solches hat zwar eine Tag - Eigenschaft, aber anscheinend nicht die Items.
Gruß
Flo
Hallo FeelFlow,
Die Items haben kein Tag. Wenn ich so etwas machen muss binde ich die ComboBox immer an IList<KeyValuePair<string,T>> (T der Typ der in das 'Tag' soll).
((Das geht nur über Umwege mit dem Designer, geht aber gut.))
Gruß
Juy Juka
Danke
Mein problem ist, dass ich zu jeden Comboboxeintrag eine ID habe und ich brauche die ID des ausgewählten Items.
Werde mich jetzt erstmal mit der IList beschäftigen, aber wenn noch jemand eine einfachere Idee hat, wär ich dankbar.
Mein problem ist, dass ich zu jeden Comboboxeintrag eine ID habe und ich brauche die ID des ausgewählten Items.
am besten du hälst dir eine klasse vor, die die beiden werte miteinander verbindet.
eine möglichkeit ist keyvaluepair. der key ist ja die ID und die ID ist ja eindeutig, daher passt das ganz gut.
die liste ist nciht unbedingt notwendig. wichtig ist nur das du der combobox sagst, welche eigenschaft angezeigt werden soll. das geht über die Displaymember eigenschaft. da gibst du dann einfach "Value" an und fertig.
Okay hab ich soweit verstanden.
Aber:
KeyValuePair<int, string> kvp;
kvp.Key = intZahl;
liefert mir den Fehler, dass kvp.Key schreibgeschützt ist.
Hallo FeelFlow,
Man (Ich) will dich ja nicht im Regen stehen lassen.
Ich würde dies wie folgt lösen:
(im Designer)
(im Code)
IList<KeyValuePair<[[typ der id]],string>> liste = new List<KeyValuePair<[[typ der id]],string>>();
foreach(??? in ???)
{
liste.Add(new KeyValuePair<[[typ der id]],string>(id,text));
}
this.bindingSource.DataSource = liste;
KeyValuePair<[[typ der id]],string> ausgewählt = (KeyValuePair<[[typ der id]],string>) this.bindingSource.Current;
[[typ der id]] id = ausgewählt.Key;
string text = ausgewählt.Value;
Gruß
Juy Juka
WOW... ich weine gleich X(. Vielen Dank für deine Mühe. Ich hatte mich schon drauf eingestellt, dass ich bis zum Abend an den problem sitze.
Aber ich muss ehrlich sein, daa wäre ich niemals drauf gekommen.
Deine Lösung klappt natürlich einwandfrei.
Danke auch an JAck30lena.
Hi!
KeyValuePair<int, string> kvp; kvp.Key = intZahl;
liefert mir den Fehler, dass kvp.Key schreibgeschützt ist.
eigendlich sollte hier eine nullreferenceexception fliegen....
das geschieht nicht, weil KVP eine Struktur ist, und kein Verweistyp (Klasse). Daher kann es nicht auf null verweisen, sondern ist immer initialisiert (defaultmäßig stehen lauter 0-Bytes im Speicher)
edit: war halbwahr. tatsächlich kommt die nullRef-Exception schon deshalb nicht, weil die Zuweisung syntaxwidrig ist, und daher gar nix kompiliert. So oder so:
du musst im konstruktor diese werte setzen.
KVP eignet sich als Structure auch nicht für anspruchsvollere Datenhaltung, da die Properties Key und Value nicht änderbar sind (und wären sie änderbar, würden Änderungen nur die Daten-Kopien betreffen, was ebenso unbrauchbar ist).
Wenn du bereits Objekte hast, mit einer ID und weiteren Properties, kannstedie ebensogut in eine BindingList stopfen, und eine Combo da anbinden.
Aber hier mal ein Demo mit KVPs, aber in VB:KeyValuePair als Datenobjekt
Der frühe Apfel fängt den Wurm.