Entwickler-Ecke
WinForms - List<> an Combobox binden
Talemantros - Mo 14.04.14 19:45
Titel: List<> an Combobox binden
Hallo,
ich habe eine Methode, die eine List<string> zurück liefert mit Werten, die ich in einer Combobox anzeigen lassen möchte.
Momentan tue ich dies so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| List<string> liste = new List<string>(); liste = ChangeLogMethods.GetValuesForCombobox(0, connStr, "version");
foreach (string element in liste) { cmbVersion.Items.Add(element); }
liste.Clear(); |
Das funktioniert auch, allerdings denke ich, dass das durchlaufen mit der Schleife vielleicht unnötig ist.
Mit DataSource oder ähnlichen bekomme ich es aber nicht hin.
Kann mir wer sagen, ob ich das so lassen soll, oder wie ich es umbauen könnte?
Danke
Gruß
Christian S. - Mo 14.04.14 19:51
Du könntest
C#-Quelltext
1:
| cmbVersion.Items.AddRange(list.ToArray()); |
verwenden. Das ist zumindest vom Quelltext her kürzer, aber ob das wirklich effizienter ist, wage ich zu bezweifeln.
Talemantros - Mo 14.04.14 19:56
Hi,
danke für deine Antwort.
Also ist mein grundsätzliches herangehen ok?
Oder sollte ich es ganz anders lösen, wenn ich die Combobox mit Werten aus einer DB füllen will.
Danke
Gruß
Christian S. - Mo 14.04.14 20:44
Hm, ich sehe gerade, dass Du der DataSource-Eigenschaft auch einfach die Liste zuweisen kannst.
In WinForms weiß ich nicht, ob es da bessere Möglichkeiten gibt, bei WPF würde ich eher auf Listen setzen, bei denen die anzeigenden Komponenten Änderungen in der Liste automatisch widerspiegeln.
Ralf Jansen - Mo 14.04.14 20:53
Zitat: |
Oder sollte ich es ganz anders lösen, wenn ich die Combobox mit Werten aus einer DB füllen will. |
Kommt drauf an. Ob du es so oder anders machen solltest hängt davon ab was du im Anschluss mit der Auswahl anstellt.
Wenn du nur strings in die ComboBox Liste wirfst um sie anzuzeigen ist es fast egal wie die dahin kommen aber meist soll ja auch noch irgendwas damit passieren.
Ralf Jansen - Mo 14.04.14 21:39
Dann ist das so okay.
Aber wie Christian bereits andeutete sollte ein einfaches zuweisen zur DataSource Property auch funktionieren. Also ein
C#-Quelltext
1:
| cmbVersion.DataSource = ChangeLogMethods.GetValuesForCombobox(0, connStr, "version"); |
Der Name GetValuesForCombobox ist etwas unglücklich. Du solltest die Methode danach benennen was sie macht bzw., da sie mit dem Wörtchen Get beginnt, danach was sie liefert.
Stell dir vor du bräuchtest die selben Daten an anderer Stelle. Würdest du ein 2.te Methode (z.B. GetValuesForListBox) schreiben die das gleiche macht aber dann so heißt wie der Context des weiteren Aufrufers? Ne, das würde wenig Sinn machen. Lass zumindest das ForComboBox weg wenn dir nicht noch was sinnigeres einfällt.
Talemantros - Di 15.04.14 12:20
Hallo,
vielen Dank für eure Antworten.
Habe die Comboboxen nun gebunden und den Namen der Methode geändert.
Werde ich demnächst immer so handhaben. Danke für den Tip.
Die Listboxen zeigen zwar nun standartmäßig den ersten zugewiesenen Wert an, aber dies habe ich mit
C#-Quelltext
1:
| cmbVersion.SelectedIndex = -1; |
behoben.
Komme heute vermutlich leider nicht mehr dazu, werde mich aber spätestens morgen dann noch mit den Hinweisen aus
http://www.entwickler-ecke.de/viewtopic.php?p=685847#685847
beschäftigen
Habe noch einiges ergoogelt um hoffetnlich hier noch was zu reißen :-)
http://www.entwickler-ecke.de/topic_Aufbau+meiner+ersten+MySQL+Datenbank_112918.html
Vielen lieben Dank
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!