Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Zápis navolených textů z dvaceti ComboBoxů do Listu pomocí For cyklu, v C# WPF

Aktivity
Avatar
Pratos Zesporaku:17.10.2020 9:43

Ahoj, mám WPF Formulář, v něm 20 ComboBoxů, po stisknutí Buttonu chci uložit všechny navolené hodnoty (ComboBox.Text) do Listu. Můžu to dělat pro každý ComboBox zvlášť, ale tím bude kód nepřehledný. Poradí mi prosím někdo, jak ty ComboBoxy dát do cyklu? Nevím jak k ním přistupovat.
Zkoušel jsem googlit i tady, kde jsem našel jedno vlákno, kde někdo použil splitContainer, ale z celého vlákna mi není jasné jak to funguje a napsaný kód nefunguje. Děkuju za rady.

 
Odpovědět
17.10.2020 9:43
Avatar
Michal Šebesta:21.10.2020 9:44

Pokud máte všechny ComboBoxy v jednom gridu nebo nějakém panelu, můžete projít list vasGrid.Children a pro každou položku můžete přidat její hodnotu do listu

List<string> list = new List<string>();
foreach (Control c in vasGrid.Children) {
        list.Add((c as ComboBox).Text)
}
 
Nahoru Odpovědět
21.10.2020 9:44
Avatar
Jakub Švasta
Lektor
Avatar
Odpovídá na Michal Šebesta
Jakub Švasta:21.10.2020 10:29

Ještě se to dá vylepšit Linq metodou OfType, která rovnou profiltruje Children podle typu. Vyhne se tak chybě, pokud má v gridu i něco jiného než jen comboboxy:

List<string> list = new List<string>();
foreach (ComboBox cb in vasGrid.Children.OfType<ComboBox>())
        list.Add(cb.Text);
 
Nahoru Odpovědět
21.10.2020 10:29
Avatar
Odpovídá na Jakub Švasta
Pratos Zesporaku:21.10.2020 10:57

Děkuju moc za rady, pokusím se to implementovat, až to budu dočesávat. Já to nakonec musel obejít, asi to vypadá dost "humpolácky", ale účel mi to splnilo. Dal jsem si všechny ComboBoxy do Listu a na ten jsem použil For cyklus:

public List<ComboBox[]> Seznam_ComboBox = new List<ComboBox[]>();
        private void Vytvor_Seznam_ComboBox()
        {
            Seznam_ComboBox.Add(new ComboBox[] { MS_ComboBox_01, V_ComboBox_01, S_ComboBox_01, St_ComboBox_01 });
            Seznam_ComboBox.Add(new ComboBox[] { MS_ComboBox_02, V_ComboBox_02, S_ComboBox_02, St_ComboBox_02 });
            Seznam_ComboBox.Add(new ComboBox[] { MS_ComboBox_03, V_ComboBox_03, S_ComboBox_03, St_ComboBox_03 });
            //...
            // až
            //...
            Seznam_ComboBox.Add(new ComboBox[] { MS_ComboBox_23, V_ComboBox_23, S_ComboBox_23, St_ComboBox_23 });
            Seznam_ComboBox.Add(new ComboBox[] { MS_ComboBox_24, V_ComboBox_24, S_ComboBox_24, St_ComboBox_24 });
        }
 
Nahoru Odpovědět
21.10.2020 10:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.