Diskuze: C# ovládání prvku, deaktivace/aktivace

C# .NET .NET (C# a Visual Basic) C# ovládání prvku, deaktivace/aktivace American English version English version

Aktivity (3)
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17. srpna 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. srpna 0:22
Avatar
STP
Člen
Avatar
STP:17. srpna 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. srpna 7:52
Když umřít, tak online!!!
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17. srpna 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. srpna 10:24
Avatar
martinpsota
Člen
Avatar
martinpsota:17. srpna 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. srpna 10:47
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 17. srpna 10:46
Avatar
Mára
Člen
Avatar
Odpovídá na asuma-sama
Mára:17. srpna 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. srpna 10:50
Avatar
Mára
Člen
Avatar
Odpovídá na martinpsota
Mára:17. srpna 10:51

Byl jsi rychlejší :D

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

Omlouvám se :)

 
Nahoru Odpovědět  +1 17. srpna 10:52
Avatar
asuma-sama
Člen
Avatar
asuma-sama:17. srpna 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. srpna 10:58
Avatar
Mára
Člen
Avatar
Odpovídá na asuma-sama
Mára:17. srpna 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. srpna 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.