Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Diskuze: WPF - CheckBoxy ve StackPanelu

Aktivity (4)
Avatar
Martin Vejvoda:19.7.2018 17:23

Čau, mám větší množství CheckBoxů ve StackPanelu. Všechny CheckBoxy dělají podobnou věc, takže abych nemusel mít spoustu metod typu CheckBox1_Clic­k(), tak používám StackPanel_Pre­viewMouseLeftBut­tonUp. Zde ale nastává problém, když zakšrtnu CheckBox, tak se metoda zavolá, ale CheckBox je stále ještě veden jako nezaškrtnutý, takže mi kód nefunguje. Nevíte někdo, jak to vyřešit?

Odpovědět 19.7.2018 17:23
matika > informatika
Avatar
Odpovídá na Martin Vejvoda
Andy Scheuchzer:19.7.2018 17:28

Nechceš třeba něco jako tohle?

<CheckBox Click="CheckBox_Click"/>

private void CheckBox_Click(object sender, EventArgs e) { } //EventArgs nevím přesně, které mají být

Nebo ještě radši místo Click si dej Checked/Unchecked.

Editováno 19.7.2018 17:29
Nahoru Odpovědět 19.7.2018 17:28
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Odpovídá na Andy Scheuchzer
Martin Vejvoda:19.7.2018 18:04

To jsem tam původně měl, ale já těch CheckBoxů mám 16 a přišlo mi, že to v kódu zabírá zbytečně moc místa. Takže jsem se rozhodl, že bych to rád předělal na StackPanel.

Nahoru Odpovědět 19.7.2018 18:04
matika > informatika
Avatar
Odpovídá na Martin Vejvoda
Andy Scheuchzer:19.7.2018 18:13

Stačí to pro všechny dohromady, nemusíš mít každý zvlášť.

<CheckBox Click="CheckBox_Click"/>
<CheckBox Click="CheckBox_Click"/>
<!-- ... -->
<CheckBox Click="CheckBox_Click"/>

Pokud potřebuješ zjistit, který to byl, sender přece znáš.

Editováno 19.7.2018 18:14
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 19.7.2018 18:13
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Odpovídá na Andy Scheuchzer
Martin Vejvoda:19.7.2018 18:18

Jo jasně, díky moc, tohle mě nenapadlo.

Nahoru Odpovědět 19.7.2018 18:18
matika > informatika
Avatar
Odpovídá na Martin Vejvoda
Andy Scheuchzer:19.7.2018 18:23

A klidně je můžeš generovat v CodeBehind.

//píšu to z hlavy, možná tam bude něco špatně nebo chybět
public void MainWindow() {
        InitializeComponent();
        for (int i = 0; i < 16; i++) {
                CheckBox chB = new CheckBox;
                Click += CheckBox_Click;
                StackPanel.Children.Add(chB);
        }
}
Editováno 19.7.2018 18:23
Nahoru Odpovědět 19.7.2018 18:23
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
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 6 zpráv z 6.