Laden...

Befüllen einer Combobox nach SelectedIndexChanged

Erstellt von Fabian710 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.473 Views
Thema geschlossen
F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 11 Jahren
Befüllen einer Combobox nach SelectedIndexChanged

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.

C
258 Beiträge seit 2011
vor 11 Jahren

Kannst du den entsprechenden Code posten?

Mit deiner Beschreibung kann man leider nur Raten warum es nicht funktioniert.

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 11 Jahren
Hinweis von herbivore vor 11 Jahren

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;
                    
                }
                
            }



           
        }

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Fabian710,

vermutlich verwendest du die falsche Instanz der ComboBox, z.B. die auf einem zwischenzeitlich neu erstellten, aber nicht sichtbarem Form.

herbivore

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 11 Jahren

Hmm, und wie kann ich das rausfinden, bzw ändern?

49.485 Beiträge seit 2005
vor 11 Jahren

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

F
Fabian710 Themenstarter:in
42 Beiträge seit 2013
vor 11 Jahren

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...

Hinweis von herbivore vor 11 Jahren

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.

Thema geschlossen