Hallo Peter!
Wenn du die Klassen noch so hast, wie ich sie dir gestern geschickt haben, ist das relativ einfach:
-
Der Constructor der Klasse cKfz muss erweitert werden, dass man die Ersatzteilliste mit hinein gibt.
-
Die übergebene Liste muss innerhalb des Constructors in die interne Liste gegeben werden. Dazu muss eine neue Instanz der Liste angelegt werden. Wenn man die Listen einfach mit „=“ übertragen möchte, stellt man schnell fest, dass nur die Speicheradresse übertragen wird und wenn ich die übergebene Liste leere, die interne (die auf den Speicher zugreift) automatisch halt auch leer ist.
-
Im Form_Load müssen die Kfz mit Ersatzteilen versehen werden.
-
Im listBox1_SelectedIndexChanged kann einfach die interne Ersatzteilliste, abgegriffen über die Property im Kfz, als DataSource an die 2. Listbox gehängt werden. Das ist halt das schöne an internen Listen, wenn man Abhängigkeiten darstellen muss
Hier der Code:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private List pkw = new List();
private List eteil = new List();
private void Form1_Load(object sender, EventArgs e)
{
List oList = new List();
//Anlegen der Ersatzteile für Kfz 4711
oList.Add(new cErsatzteil(„0001“, „Motorhaube“));
oList.Add(new cErsatzteil(„0002“, „Tür“));
oList.Add(new cErsatzteil(„0003“, „Reifen“));
//Anlegen Kfz 4711
pkw.Add(new cKfz(„4711“, „Ford“, oList));
//Liste leeren
oList.Clear();
//Anlegen der Ersatzteile für Kfz 4711
oList.Add(new cErsatzteil(„0001“, „Motorhaube“));
oList.Add(new cErsatzteil(„0004“, „Lenkrad“));
oList.Add(new cErsatzteil(„0007“, „Blinker“));
//Anlegen Kfz 4711
pkw.Add(new cKfz(„4712“, „VW“, oList));
//Liste leeren
oList.Clear();
//Anlegen der Ersatzteile für Kfz 4711
oList.Add(new cErsatzteil(„0005“, „Scheibenwischer“));
oList.Add(new cErsatzteil(„0002“, „Tür“));
oList.Add(new cErsatzteil(„0006“, „Öl“));
//Anlegen Kfz 4711
pkw.Add(new cKfz(„4713“, „BMW“, oList));
//Liste leeren
oList.Clear();
listBox1.DataSource = pkw;
listBox1.DisplayMember = „KfzMarke“;
listBox1.ValueMember = „KfzKennzeichen“;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//for (int j = 0; j _oErsatzteilList = new List();
public cKfz(string sKfzKennzeichen, string sKfzMarke, List oErsatzteilList)
{
_sKfzID = sKfzKennzeichen;
_sKfzMarke = sKfzMarke;
_oErsatzteilList = new List(oErsatzteilList);
}
public string KfzKennzeichen
{
get { return _sKfzID; }
}
public string KfzMarke
{
get { return _sKfzMarke; }
}
public List ErsatzteilListe
{
get { return _oErsatzteilList; }
}
}
public class cErsatzteil
{
private string _sID;
private string _sBezeichnung;
public cErsatzteil(string sID, string sBezeichnung)
{
_sID = sID;
_sBezeichnung = sBezeichnung;
}
public string ErsatzteilID
{
get { return _sID; }
}
public string ErsatzteilBezeichnung
{
get { return _sBezeichnung; }
}
}
Ich hoffe, ich konnte dir damit weiter helfen.
Viele Grüße,
René