Zdravím mám menší problém nejspíš s přetypováním. C# se teprve učím.
private void zadaniHesla(object sender, EventArgs e) // TEXT BOX
{
}
private void klikPrihlasit(object sender, EventArgs e) // BUTTON PŘIHLÁŠENÍ
{
int a = 1234;
if (tbHeslo.TextLength == a) // POKUD TEXT BOX == PROMĚNNÉ "A" OTEVŘE SE FORM 2
{
Form2 form = new Form2();
form.Show();
}
else
{
Close();
}
Problém spočívá že pokud zadám číselnou variaci Form2 se neotevře. I když zadám čísla špatně Form1 se nezavře.
Nahlásit jako SPAM
IP: 89.177.13.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Jak již bylo řečeno. TextLength vrací délku řetězce, takže použijte vlastnost Text, která vrací obsah textového pole. Další věcí je, že pokud to z nějakého důvodu opravdu nepotřebujete, proměnnou pro heslo definujte jako string (textový řetězec) a nemusíte vůbec řešit nějaké přetypovávání, protože porovnáváte dva stejné datové typy.
string a = "1234";
if (tbHeslo.Text == a)
{
// Váš kód,...
}
#8naromax
Programátor nikdy nesmí důvěřovat vstupu od uživatele Convert.ToInt32 vyhodí výjimku v případě, že vstup není číslo. Proto by bylo lepší řešení třeba tohle:
int heslo = 1234;
int zadaneHeslo;
if (Int32.TryParse(tbHeslo.Text, out zadaneHeslo) && heslo == zadaneHeslo)
{
Form2 form = new Form2();
form.Show();
}
Metoda TryParse vrací true v případě, že se povedlo ze stringu získat číslo, jinak vrací false..
#9LukoSS
Ano, to jsem trochu opomenul. V tom případě by bylo vhodnější přetypovat proměnnou a na string (a.ToString()) a potom hodnoty porovnávat.
Ale jak jsem již řekl, heslo by mělo být definované jako string, nevidím absolutně žádný důvod, proč by to mělo být číslo. Tím do značné míry také degradujete i možnosti pro bezpečnější heslo (příklad - 123456789 a 1b3D94d56qw4r - zde je rozdíl myslím dost patrný).
#10naromax
Dotaz původně zněl jak převést řetězec na číslo a když už se tu objevil kód s Convert.ToInt32, tak jsem se jen snažil ukázat správnou cestu. To, že by mělo být heslo string a ne int je samozřejmě pravda, o tom nemá cenu diskutovat..