Python týden Geek tričko zdarma
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: C# ovládání prvku, deaktivace/aktivace

Aktivity (4)
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17.8.2018 0:22

Ahoj, jsem samouk začátečník tak prosím o trochu trpělivosti.

Mám prográmek naprogramovaný ve Visual Studio 2017, windows form.

Zapne se, ale tím pádem jsou přístupná všechna tlačítka a ovládání což nechci. Například tlačítko pro smazání nastavení nechci, aby mohl kdokoli spustit jen tak.
Napadlo mě hodit jednoduchou podmínku IF, pokud bude textové pole obsahovat například číslo 123456, pak tlačítko NASTAVENI se aktivuje.

Zkusil jsem:

private void textBox2_TextChanged(object sender, EventArgs e)
        {

            if (textBox2.Text == "123456")
            {
                Button btn = sender as Button);
                btn.Visible = true;

            }
            else
            {

            }

Chci docílit: Problém je, že nevím jak to celé správně deklarovat, případně zda to nějak takto funkčně jde spravit.

Děkuji každému kdo poradí :-)

 
Odpovědět 17.8.2018 0:22
Avatar
STP
Člen
Avatar
STP:17.8.2018 7:52

Ahoj,
Button budeš mít definovaný v Designeru. Když vyhodíš řádku

Button btn = sender as Button);

a button na nastavení se jmenuje btn, bude to fungovat.

Nahoru Odpovědět 17.8.2018 7:52
Když umřít, tak online!!!
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17.8.2018 10:24

Program se spustí, ale při zadání kódu napíše neošetřenou výjimku:

System.NullRe­ferenceExcepti­on: Odkaz na objekt není nastaven na instanci objektu.

btn – null.

 
Nahoru Odpovědět 17.8.2018 10:24
Avatar
martinpsota
Člen
Avatar
martinpsota:17.8.2018 10:46

Ahoj,
sender v tomto případě není Button, ale TextBox.

To znamená, že pokud chceš aby to fungovalo, tak musíš nastavit visible pro dané tlačítko.

To znamená, že pokud má tvoje tlačítko Name = NASTAVENI tak použiješ:

private void textBox2_TextChanged(object sender, EventArgs e)
        {

            if (textBox2.Text == "123456")
            {
               NASTAVENI.Visible = true;
            }
            else
            {
                                NASTAVENI.Visible = false;
            }
}

Tak to bude fungovat.

Editováno 17.8.2018 10:47
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 17.8.2018 10:46
Avatar
Mára
Člen
Avatar
Odpovídá na asuma-sama
Mára:17.8.2018 10:50

Ahoj, problém bude zřejmě v tom, že ti (pravděpodobně - dle názvu metody) přichází v tom objektu sender TextBox, a ne Button.
Pokud chceš ten button zviditelnit, tak ho v designeru pojmenuj - třeba "mysticButton", to je jedno a pak v kódu jen napíšeš mysticButton.Vi­sible = true;

 
Nahoru Odpovědět  +1 17.8.2018 10:50
Avatar
Mára
Člen
Avatar
Odpovídá na martinpsota
Mára:17.8.2018 10:51

Byl jsi rychlejší :D

 
Nahoru Odpovědět 17.8.2018 10:51
Avatar
martinpsota
Člen
Avatar
Odpovídá na Mára
martinpsota:17.8.2018 10:52

Omlouvám se :)

 
Nahoru Odpovědět  +1 17.8.2018 10:52
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17.8.2018 10:58

Děkuju všem!

Už mi to funguje. Nějak mi nedošlo, že jsem nastavoval místo tlačítka, textbox.

 
Nahoru Odpovědět 17.8.2018 10:58
Avatar
Mára
Člen
Avatar
Odpovídá na asuma-sama
Mára:17.8.2018 11:34

Super, jen tě upozorním, že tady na fóru je taková slušnost označit jako řešení ten komentář, který ti nejvíc pomohl - přidá to tomu člověku body, zkušenosti atp. Zvyšuje to motivaci lidí pomáhat :D Protože z toho taky něco mají.

 
Nahoru Odpovědět 17.8.2018 11:34
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 9 zpráv z 9.