Letní akce! Lákají tě IT školení C#, Javy a PHP v Brně? Přihlas se a napiš nám do zpráv kód "BRNO 500" pro slevu 500 Kč na libovolný brněnský kurz. Lze kombinovat se slevami uvedenými u školení i použít pro více kurzů. Akce končí 28.7.

Lekce 13 - Základní ovládací prvky Windows Forms

C# .NET Formuláře Windows Forms Základní ovládací prvky Windows Forms

ONEbit hosting Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, DataGridView v C# .NET Windows Forms, jsme dokončili práci s ovládacím prvkem DataGridView. V dnešním C# .NET tutoriálu započneme takovou prohlídku ovládacích prvků (controls) ve Windows Forms. V Toolboxu jich máme na výběr opravdu hodně a každá z nich má spoustu vlastností a událostí. V několika lekcích si nyní popíšeme ty nejpoužívanější ovládací prvky a jejich nejdůležitější vlastnosti a události.

Button (tlačítko)

Button/tlačítko ve Windows forms aplikaci

Začněme tlačítkem. Button slouží jako tlačítko, které jistě dobře znáte. Obvykle se jedná o klíčový prvek v naší aplikaci, který na základě dalších údajů ve formuláři vykoná nějakou akci.

Vlastnosti

Mezi důležité vlastnosti patří:

  • Text (string) - Text napsaný na tlačítku, tedy jeho popisek. V ukázce výše je text Button.
  • Image - Ikonka (obrázek) na tlačítku.
  • ImageAlign - Zarovnání obrázku vůči popisku tlačítka.

Události

  • Click - Vyvolá se po kliknutí na tlačítko.

Label (Popisek)

Label/popisek ve Windows forms aplikaci

Label je textový popisek, který se vkládá nad ostatní ovládací prvky nebo vedle nich. Uživatel poté ví, jak je používat. Label s textem "Jméno" u textového pole uživateli sdělí, že zde program očekává jméno.

Vlastnosti

  • Text (string) - Text popisku (v ukázce výše Label).

Události

Žádné důležité.

TextBox (Textové pole)

TextBox/Textové pole ve Windows forms aplikaci

Dostáváme se k ovládacím prvkům, které slouží k zadávání hodnot. TextBox slouží k zadávání textu. I když by se dal teoreticky použít i k zadávání hodnot jiných typů (číslo, datum, ...), většinou to není vhodné a pro tento účel existuje jiný ovládací prvek. Můžeme zadávat jak krátký text do jednoho řádku (viz. ukázka výše), tak text několikařádkový, TextBox poté vypadá takto:

MultiLine TextBox/Víceřádkové textové pole ve Windows forms aplikaci

Vlastnosti

  • Text (string) - Obsah textového pole (tedy text v něm zadaný).
  • MultiLine (bool) - Pokud nastavíme na true, můžeme textové pole roztahovat i na výšku a můžeme do něj vkládat víceřádkový text.
  • ScrollBars - Pokud vkládáme víceřádkový text, je vhodné nastavit zobrazování posuvníků (scrollbarů) v případě, že se text do obsahu pole nevejde. Můžeme si vybrat mezi svislým posuvníkem (asi nejčastější), vodorovným, oběma a žádným.
  • Lines (String[]) - Obsah textového pole jako pole řádků (stringů). Používáme v případě, že je vlastnost MultiLine na true.
  • MaxLength (int) - Omezení pole na určitou délku znaků.
  • ReadOnly (bool) - Umožňuje nastavit pole jen pro čtení. Tedy aby z něj uživatel mohl hodnotu číst a kopírovat, ale nemohl ji měnit.
  • WordWrap (bool) - Zalamování slov.
  • PasswordChar (char) - Pokud do pole chceme zadávat heslo, nastavíme PasswordChar na nějaký znak (nejčastěji hvězdička *). V tu chvíli se všechny znaky budou zobrazovat jako hvězdičky a zadání hesla bude bezpečnější.

Události

  • TextChanged - Vyvolá se při změně textu, jinými slovy při přidání každého písmenka do pole. Pozor si zde dáme na to, jak často se událost vyvolá. Když zapíšeme text o délce 100 znaků, zavolá se 100x (postupně s přidáváním jednotlivých písmen). Určitě by v ní neměl být kód, který se vykonává dlouho. Možné využití této události je např. aktualizace dalších polí a popisků na formuláři při změně tohoto pole.

NumericUpDown (Číselné pole)

NumericUpDown/Číselné pole ve Windows forms aplikaci

K zadávání číselných hodnot slouží NumericUpDown. Ačkoli můžeme číslo zadat i do TextBoxu a poté ho naparsovat např. na int, není tento způsob zadání nejvhodnější. Uživatel nám totiž místo čísla může do políčka vložit nějaký nesmysl. NumericUpDown umožňuje vložit pouze číslo, můžeme se tedy na tuto hodnotu spolehnout a odpadá parsování a reakce na nevalidní vstupy. Kromě toho můžeme i omezit rozsah čísla.

Vlastnosti

  • Value (decimal) - Číselná hodnota v poli. Hodnota je typu decimal. V programech ji budeme častěji potřebovat jako int nebo float, proto ji zkonvertujeme pomocí třídy Convert, např. takto:
int i = Convert.ToInt32(NumericUpDown1.Value);
  • DecimalPlaces (int) - Počet desetinných míst, pro celá čísla 0.
  • Increment (decimal) - Udává o kolik se má hodnota v poli zvýšit po kliknutí na šipičku nahoru (a snížit šipičkou dolů).
  • ReadOnly (bool) - Pole bude jen pro čtení.

Události

  • ValueChanged - Vyvolá se ve chvíli změny hodnoty. Stejně jako u TextBoxu se tato událost vyvolává při každém vloženém znaku nebo při každém kliknutí na šipičku.

ComboBox (Pole výběru)

ComboBox/Pole výběru ve Windows forms aplikaci

Pokud potřebujeme vybrat položku z nějakého výběru, můžeme použít 2 základní ovládací prvky. První je ComboBox, ten obsahuje několik položek a my jednu z nich můžeme vybrat. Zobrazuje se jako vyjížděcí nabídka, šetří tedy místo na formuláři.

Vlastnosti

  • Items (kolekce) - Negenerická kolekce položek. V designeru ve Visual Studiu si zde můžete zadat textové položky. Do Items jinak můžete vložit libovolné objekty. Budou se poté vypisovat tak, jak udává jejich metoda ToString(). Ukládat do těchto ovládacích prvků rovnou objekty je velmi výhodné, to uvidíte u vlastnosti SelectedItem.
  • SelectedItemIndex - Index vybraného prvku (první prvek má index 0). Tato vlastnost bohužel nejde zadat v designeru a často ji tedy nastavujeme např. v konstruktoru formuláře, aby byla po spuštění aplikace vybrána 1. položka v ComboBoxu.
  • SelectedItem - Vybraný prvek. Na rozdíl od předchozí vlastnosti vrací přímo vybraný prvek jako object. Pokud máme v Items objekty (např. instance třídy Uzivatel), dostaneme po přetypování přímo instanci uživatele, který je v ComboBoxu vybrán. Velmi jednoduše s ním můžeme ihned pracovat.
  • Sorted (bool) - Pokud vlastnost nastavíme na true, bude se seznam položek udržovat setříděný (např. podle abecedy).
  • DataSource - Místo přidávání prvků do Items můžeme nastavit tzv. DataSource, tedy zdroj dat. Ovládací prvek poté obvykle sám reaguje na jeho změny a nemusíme měnit Items.
  • DisplayMember - Ve zdroji dat máme obvykle nějakou kolekci objektů, zde můžeme nastavit jméno vlastnosti objektu, která se má vypisovat (např. Jmeno v případě, že máme v DataSource uživatele a ti mají vlastnost Jmeno). Nemusíme tak přetěžovat ToString() nebo můžeme objekt zobrazovat různými způsoby.

Události

  • SelectedIndexChanged - Vyvolá se v případě změny vybrané položky.

ListBox (Seznam výběru)

ListBox/Seznam výběru ve Windows forms aplikaci

ListBox je v podstatě rozbalený ComboBox, jinak funguje skoro stejně. Umožňuje nám vybrat položku ze seznamu. Na rozdíl od ComboBoxu však položek můžeme vybrat více (ale nemusíme).

Vlastnosti

Kromě vlastností, které jsou totožné jako na ComboBoxu (tedy Items, SelectedItemIndex, SelectedItem a Sorted, viz. výše) můžeme použít další rozšířené:

  • SelectionMode - Můžeme nastavit několik módů výběru. One umožňuje vybrat jen jednu položku, MultiSimple umožňuje vybrat více položek najednou. MultiExtended umožňuje vybrat více a to i pomocí kláves Ctrl a Shift. None neumožňuje položky vybírat vůbec.
  • SelectedItems - Kolekce vybraných položek. Používáme ji v případě, že jsme umožnili výběr více položek.
  • SelectedIndices - Vrátí kolekci indexů vybraných položek.
  • MultiColumn (bool) - Pokud nastavíme na true, budou se položky zobrazovat ve více sloupcích.

Události

  • SelectedIndexChanged - Vyvolá se v případě změny vybrané položky.

CheckBox (Zaškrtávací pole)

CheckBox/Zaškrtávací pole ve Windows forms aplikaci

CheckBox nám jednoduše řečeno umožňuje něco zapnout nebo vypnout. Své uplatnění nalezne zejména v nastavení aplikace.

Vlastnosti

  • Checked (bool) - Udává, zda je CheckBox zaškrtnutý či nikoli.
  • Text (string) - Textový popisek CheckBoxu (vysvětluje co zapínáme/vypínáme. Zde je nastaven na CheckBox).

Události

  • CheckedChanged - Vyvolá se ve chvíli změnění zaškrtnutí (tedy pokud jsme políčko zaškrtli nebo odškrtli). Zde můžeme reagovat na změnu nastavení a podle toho uzpůsobit chování aplikace.

V příští lekci, Další ovládací prvky Windows Forms, se podíváme na další, pokročilejší ovládací prvky.


 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
8 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity (3)

 

 

Komentáře
Zobrazit starší komentáře (18)

Avatar
Libor Šimo (libcosenior):4.8.2013 20:28

Tak som to vyriešil event-om Validated.
Do textboxu niečo zapíšem a keď použijem iný prvok (napr. button, ktorý s textboxom nesúvisí) spustí sa najprv metóda pre textbox.

Odpovědět 4.8.2013 20:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:4.8.2013 20:56

Odchyť si enter přes KeyPress event.

 
Odpovědět 4.8.2013 20:56
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):5.8.2013 11:36

Už som niečo našiel na nete, tak to hádam zvládnem.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == Convert.ToChar(Keys.Return))
        {
            MessageBox.Show("Key pressed");
        }
    }
Odpovědět 5.8.2013 11:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:5.8.2013 11:52

Jo, to je přesně ono.

 
Odpovědět 5.8.2013 11:52
Avatar
Libor Šimo (libcosenior):5.8.2013 15:57

Všetko je na nete, len treba vedieť čo hľadať, díky. 8-)

Editováno 5.8.2013 15:58
Odpovědět 5.8.2013 15:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):5.8.2013 16:01

Stále zabúdam, že treba odpovedať na konkrétny príspevok. Tak ešte raz dík. ;)

Odpovědět 5.8.2013 16:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:21.9.2013 21:01

Toto není dobrý úvod do WF aplikací. o_O

Odpovědět 21.9.2013 21:01
Life doesn't give you lemons. You need to grow them patiently and then sell the lemonade.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Čech
David Čápka:21.9.2013 21:32

Nikde jsem si nevšiml, že by tento článek měl být úvodem.

Odpovědět  +1 21.9.2013 21:32
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Petr Čech
Redaktor
Avatar
Petr Čech:21.9.2013 21:36

To sice nikde není, ale kde teda je, když ne v prvním článku v sekci? :o

Odpovědět 21.9.2013 21:36
Life doesn't give you lemons. You need to grow them patiently and then sell the lemonade.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Čech
David Čápka:21.9.2013 21:39

Dám ti šokující odpověď: ještě jsem ho nenapsal! :o

Odpovědět  +1 21.9.2013 21:39
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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 10 zpráv z 28. Zobrazit vše