Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.

Diskuze: WPF - CheckBoxy ve StackPanelu

Aktivity
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
Reaktivní uživatel: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
Kdo je připraven, toho zaskočí něco jiného
Avatar
Odpovídá na Reaktivní uživatel
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Martin Vejvoda
Reaktivní uživatel: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
Kdo je připraven, toho zaskočí něco jiného
Avatar
Odpovídá na Reaktivní uživatel
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
Reaktivní uživatel: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
Kdo je připraven, toho zaskočí něco jiného
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.