Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Mo 14.04.14 19:45 
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:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 14.04.14 19:51 
Du könntest
ausblenden 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Mo 14.04.14 21:23 
Hi,
Die Combobox enthält am Ende Versionsnummern der Anwendung und soll dann bei Auswahl eines Wertes die dazugehörigen Datensätze anzeigen

Die Frage gehört auch zu www.entwickler-ecke....lklassen_112917.html

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: 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
ausblenden 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
www.entwickler-ecke.....php?p=685847#685847
beschäftigen

Habe noch einiges ergoogelt um hoffetnlich hier noch was zu reißen :-)
www.entwickler-ecke....atenbank_112918.html

Vielen lieben Dank

Gruß