Zdravím, jsem začátečníkem v C# a potřeboval bych s něčím pomoct.
Řekněme, že mám program, který má Form1 a Form2. Na Form1 mám textbox a tlačítko. Pokud do textboxu zadám něco jiného než tam má být, tak vyskočí MessageBox a řekne, že to tam být nemá, a když tam je to, co tam má být, vyskočí Form2, kde mám label.
Potřebuju udělat proměnnou, která při každém zmáčknutí tlačítka se špatným textem v textboxu zvyší svojí hodnotu o 1 a poté při otevření Form2 vypíše svojí hodnotu do toho labelu.
To zvyšování bych udělal asi přes else.. viz. kód níže, ale kam a jak mám deklarovat tu proměnnou?
if (txtbox1.Text = "lalalala")
{
Form2 f2 = new Form2();
f2.Show();
}
else
{
MessageBox.Show("chyba");
intchyba++;
}
Fórum › .NET
Proměnná pro celý program
V tomhle případě nepotřebuješ žádnou globální proměnnou (které jako takové v C# kvůli zapouzdření nejsou), stačí jen při vytvoření Form2 předat hodnotu proměnné intchyba konstruktoru:
//Konstruktor třídy Form2
public Form2(int cislo)
{
Label1.Text = cislo;
}
//Úryvek tvého kódu (upravený)
if (txtbox1.Text = "lalalala")
{
Form2 f2 = new Form2(intchyba);
f2.Show();
}
...
V C# existuju globalne premenne - ale tie by som nepouzival ako zaciatocnik (sietova prevadzka aplikacii apod.). Volaju sa staticke premenne.
Vytovri sa "public static int Meno;" a potom sa k nej pristupuje cez Class.Meno (kde sa implementovala) bez ohladu na vytvorenu instanciu danej triedy (teda je to globalne - napr. v App triede). Navrhovane riesenie je ale samozrejme lepsie. Odporucam pouzivat jasne rozhranie - lepsie sa to refaktoruje v buducnosti a pracuje sa s tym v teame!
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Program se nedokončí celý — založil Marek
Konstanty pro celý Solution — založil Johny
Podmínka pro celý soubor — založil Mates
Android OnToucListener pro celý fragment — založil Tomáš
Promenna pro stranku — založil cecil
Moderátoři diskuze