Autor Beitrag
freddyweber91
Hält's aus hier
Beiträge: 1
Erhaltene Danke: 1



BeitragVerfasst: Mo 25.11.13 21:08 
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:)

Für diesen Beitrag haben gedankt: Müsli_Mueller
Müsli_Mueller
Hält's aus hier
Beiträge: 1
Erhaltene Danke: 2



BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
Auto mein_auto;
ArrayList alle_autos;

In public Form1 erstellst du dann eine neue ArrayList:
ausblenden 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.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if (radioButton1.Checked == true)
{
  //ein Auto anlegen:
  Auto das_neue_auto = new WIEAUCHIMMERDERAUSGEWÄHLTEKFZKLASSEHEISST();

  // Werte aus der textbox auslesen:
  String der_name this.textBox1.Text;

  das_neue_auto.name = der_name;

  //das neue Objekt in die globale Arraylist legen:
  alle_autos.Add(das_neue_auto);
}

Jetzt brauchst du nur noch eine Funktion um dir alle hinzugefügten Objekte in der ArrayList anzuschauen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
//Funktionsaufruf:

listBox1.Items.Clear();
alle_autos_anzeigen();

//Funktionsrumpf:

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 user profile iconTh69: C#-Tags hinzugefügt

Für diesen Beitrag haben gedankt: Dabra, dirtyharry93
Dabra
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ausblenden 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
    {
        //Konstruktor
        public Auto(string name)
        {
            m_Autoname = name;
        }
        //Attribut
        private string m_Autoname;

        //Get
        public string getAutoname()
        {
            return m_Autoname;
        }
    }
}


Form1
ausblenden volle Höhe 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();
            //Objektliste aufrufen
            _autolist = new List<Auto>();
        }
        //Objektliste für Klasse auto erstellen
        List<Auto> _autolist;

        //Button Auto hinzufügen
        private void buttonAutohinzufuegen_Click(object sender, EventArgs e)
        {
            string strAutoname = textBoxAuto.Text;
            Auto objAuto = new Auto(strAutoname);
            _autolist.Add(objAuto);
            //Liste aktualisieren
            Listeaktualisieren();
            //Textbox leeren
            textBoxAuto.Clear();
        }

        //Methode Liste aktualisieren
        private void Listeaktualisieren()
        {
            int iAnzahl = _autolist.Count();
            for(int i = 0;i<iAnzahl; i++)
            {
                string Autoname = _autolist[i].getAutoname();
                listBoxAuto.Items.Add(Autoname);
            }
        }
    }
}
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 26.11.13 11:30 
Hallo,

ich würde auch die Lösung von user profile iconDabra 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:
ausblenden C#-Quelltext
1:
listBox.DataSource = list;					

Ein Beispiel dafür findet sich auch im OpenBook Visual C# 2008 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!).