Hallo,
ich habe zwei Comboboxen. Box 1 Lagertyp, Box 2 Lagerplatz
Beide werden über eigene Benutzersteuerelemente in einer Form dargestellt.
Comboxbox 1 startete eine Anfrage zur Datenbank, bekamn die Antwort, Verarbeitung auf adden hat problemlos geklappt.
Nun liegt auf Combobox1 noch ein SelectedItemChanged. Es soll die zweite Box befüllen. Die Anfrage und Verarbeitung klappt ohne Probleme, ich bekomme auch den String der in die Combobox geaddet werden soll. Doch der Befehl cobLagerplatz.Items.Add(string) wird nicht ausgeführt, bzw die Combobox2 wird nicht befüllt.
Kannst du den entsprechenden Code posten?
Mit deiner Beschreibung kann man leider nur Raten warum es nicht funktioniert.
Eine Anmerkung vorab: ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.
Combobox 1
public void FillList(ArrayList Daten)
{
string[] lagertyp, typen;
ArrayList daten = new ArrayList();
daten = Daten;
for (int i = 0; i < daten.Count; i++)
{
string zwischen = daten[i].ToString();
try
{
lagertyp = zwischen.Split('|');
}
catch (ArgumentException)
{
return;
}
typen = lagertyp;
string s = typen[0];
string t = typen[1];
string Lagertyp = typen[0] + "-" + typen[1];
try
{
cobLagertyp.Items.Add(Lagertyp);
}
catch (ArgumentNullException)
{
return;
}
}
}
SelectedItemChange
private void cbLagertyp_Auswahl(object sender, EventArgs e)
{
if (cobLagertyp.SelectedItem.ToString() == "Lagertyp")
{
return;
}
else
{
string auswahl, typ;
string[] typen;
auswahl = cobLagertyp.SelectedItem.ToString();
typen = auswahl.Split('-');
typ = typen[0];
H.lagertyp = typ;
cb.adden();
}
}
Combobox 2 befüllen
public void adden()
{
string test = H.lagertyp;
MessageBox.Show(test);
string lagertyp = test;
RtcMessage anfrage;
string antwort, neu, xneu;
string[] dat, lagerplatz, plaetze;
ArrayList daten = new ArrayList();
int index, len, laenge;
try
{
anfrage = RtcConnection.Request("LS.LN?" + lagertyp, 500);
antwort = anfrage.FullResponse.ToString();
MessageBox.Show(antwort);
}
catch (InvalidOperationException)
{
return;
}
index = antwort.IndexOf('{');
len = antwort.Length;
laenge = len - index;
try
{
neu = antwort.Substring(index);
}
catch (ArgumentOutOfRangeException)
{
return;
}
try
{
xneu = neu.Replace("{{", "}|{");
}
catch (ArgumentNullException)
{
return;
}
catch (ArgumentException)
{
return;
}
try
{
dat = xneu.Split(new string[] { "}|{"}, StringSplitOptions.None);
}
catch(ArgumentException)
{
return;
}
for (int i = 0; i < dat.Length; i++)
{
if (dat[i] == "")
continue;
else
{
try
{
daten.Add(dat[i]);
}
catch (NotSupportedException)
{
return;
}
}
}
for (int i = 0; i < daten.Count; i++)
{
string zwischen = daten[i].ToString();
try
{
lagerplatz = zwischen.Split('|');
}
catch (ArgumentException)
{
return;
}
plaetze = lagerplatz;
string s = plaetze[1];
string t = plaetze[3];
string x = plaetze[1] + "-" + plaetze[3];
try
{
cobLagerplatz.Items.Add(x);
cobLagerplatz.Refresh();
}
catch (ArgumentNullException)
{
MessageBox.Show("hallo");
return;
}
}
}
Hallo Fabian710,
vermutlich verwendest du die falsche Instanz der ComboBox, z.B. die auf einem zwischenzeitlich neu erstellten, aber nicht sichtbarem Form.
herbivore
Hallo Fabian710,
indem du mal schaust, wo du neue Instanzen erstellst und dir im Debugger zusätzlich die Abläufe anschaust.
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
herbivore
Die Combobox wird über ein Benutzersteuerelement auf der Hauptform erstellt. Wenn ich mir im Debugmodus das genau anschaue funktioniert es soweit auch, in der Variable x steht auch das, was in die Combobox eingefügt werden soll. Aber der Schritt funktioniert dann nicht...
Das stärkt die These, dass die falsche Instanz verwendet wird. Solange nichts gegenteiliges bekannt ist, gehe ich mal aus, dass die Frage damit unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1 fällt.