Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
discount week 80
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Mouser
Člen
Avatar
Odpovídá na Michal Šebesta
Mouser: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 Mouser
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.