Entwickler-Ecke
WinForms - Eingelesene Elemente in ListBox anzeigen
freddyweber91 - Mo 25.11.13 21:08
Titel: Eingelesene Elemente in ListBox anzeigen
Hallo liebe Community,
für ein Projekt muss ich eine Fuhrparksverwaltung schreiben.
Dazu möchte ich Elemente (Autos des Fuhrparks) über Textfelder hinzufügen. Diese sollen dann in einer ListBox angezeigt und ausgewählt werden.
Nun komme ich leider mit dem hinzufügen der Elemente nicht so recht weiter.
Denn die Elemente werden in meiner ArrayList nicht angezeigt.
Nun wollte ich Wissen, ob mein grundsätzlicher Ansatz ok oder schon völlig verkehrt ist.
Vielen Dank:)
Müsli_Mueller - Mo 25.11.13 21:25
Hallo Freddy,
der Ansatz klingt schon mal ok.
Als erstes musst du in public partial class eine Arraylist und eine Variable erstellen:
C#-Quelltext
1: 2:
| Auto mein_auto; ArrayList alle_autos; |
In public Form1 erstellst du dann eine neue ArrayList:
C#-Quelltext
1:
| alle_autos = new ArrayList(); |
Jetzt kannst du zB einen Button belegen, der beim Klicken eins deiner von dir ausgewählen und benannten Autos erstellt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| if (radioButton1.Checked == true) { Auto das_neue_auto = new WIEAUCHIMMERDERAUSGEWÄHLTEKFZKLASSEHEISST();
String der_name this.textBox1.Text;
das_neue_auto.name = der_name;
alle_autos.Add(das_neue_auto); } |
Jetzt brauchst du nur noch eine Funktion um dir alle hinzugefügten Objekte in der ArrayList anzuschauen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| listBox1.Items.Clear(); alle_autos_anzeigen();
void alle_autos_anzeigen() { String zeile = "";
foreach (objekt x in alle_autos) { if (x is Auto) { Auto aktuell = (Auto)x; zeile = aktuell.name; this.listBox1.Items.Add(zeile); } } } |
Hoffe ich konnte dir damit einen ersten Ansatz liefern!
LG
Moderiert von
Th69: C#-Tags hinzugefügt
Dabra - Mo 25.11.13 21:59
Also ich würde es so lösen. Bin aber nur ein Anfänger
Hoffe ich habe dein Problem richtig verstanden
Klasse Auto
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| namespace Fuhrpark { class Auto { public Auto(string name) { m_Autoname = name; } private string m_Autoname;
public string getAutoname() { return m_Autoname; } } } |
Form1
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| namespace Fuhrpark { public partial class Form1 : Form { public Form1() { InitializeComponent(); _autolist = new List<Auto>(); } List<Auto> _autolist;
private void buttonAutohinzufuegen_Click(object sender, EventArgs e) { string strAutoname = textBoxAuto.Text; Auto objAuto = new Auto(strAutoname); _autolist.Add(objAuto); Listeaktualisieren(); textBoxAuto.Clear(); }
private void Listeaktualisieren() { int iAnzahl = _autolist.Count(); for(int i = 0;i<iAnzahl; i++) { string Autoname = _autolist[i].getAutoname(); listBoxAuto.Items.Add(Autoname); } } } } |
Th69 - Di 26.11.13 11:30
Hallo,
ich würde auch die Lösung von
Dabra bevorzugen, denn
ArrayList ist veraltet (noch aus .NET 1.x-Zeiten) und seit .NET 2 sollte man die generische Klasse
List<T> verwenden.
Und noch zur
ListBox: diese unterstützt Datenbindung ("DataBinding"), d.h. man kann eine Liste direkt der ListBox als
DataSource geben:
C#-Quelltext
1:
| listBox.DataSource = list; |
Ein Beispiel dafür findet sich auch im OpenBook
Visual C# 2008 [
http://openbook.galileocomputing.de/visual_csharp/] unter Kapitel "14.9.6 Füllen einer Listbox mit »DataSource«" (auch wenn hier leider auch die ArrayList verwendet wird, aber mit einer generischen Liste funktioniert es genauso!).
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!