Lekce 13 - Základní ovládací prvky Windows Forms
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)
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 textButton
.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
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ýšeLabel
).
Události
Žádné důležité.
TextBox (Textové pole)
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:
Vlastnosti
Text
(string
) - Obsah textového pole (tedy text v něm zadaný).MultiLine
(bool
) - Pokud nastavíme natrue
, 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 vlastnostMultiLine
natrue
.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ímePasswordChar
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)
K zadávání číselných hodnot slouží NumericUpDown
.
Ačkoli můžeme číslo zadat i do TextBox
u 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 typudecimal
. V programech ji budeme častěji potřebovat jakoint
nebofloat
, proto ji zkonvertujeme pomocí třídyConvert
, např. takto:
int i = Convert.ToInt32(NumericUpDown1.Value);
DecimalPlaces
(int
) - Počet desetinných míst, pro celá čísla0
.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 uTextBox
u 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)
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. DoItems
jinak můžete vložit libovolné objekty. Budou se poté vypisovat tak, jak udává jejich metodaToString()
. Ukládat do těchto ovládacích prvků rovnou objekty je velmi výhodné, to uvidíte u vlastnostiSelectedItem
.SelectedItemIndex
- Index vybraného prvku (první prvek má index0
). 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 vComboBoxu
.SelectedItem
- Vybraný prvek. Na rozdíl od předchozí vlastnosti vrací přímo vybraný prvek jakoobject
. Pokud máme vItems
objekty (např. instance třídyUzivatel
), dostaneme po přetypování přímo instanci uživatele, který je vComboBox
u vybrán. Velmi jednoduše s ním můžeme ihned pracovat.Sorted
(bool
) - Pokud vlastnost nastavíme natrue
, bude se seznam položek udržovat setříděný (např. podle abecedy).DataSource
- Místo přidávání prvků doItems
můžeme nastavit tzv.DataSource
, tedy zdroj dat. Ovládací prvek poté obvykle sám reaguje na jeho změny a nemusíme měnitItems
.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 vDataSource
uživatele a ti mají vlastnostJmeno
). Nemusíme tak přetěžovatToString()
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
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 ComboBox
u
(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 natrue
, 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
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 jeCheckBox
zaškrtnutý či nikoli.Text
(string
) - Textový popisekCheckBox
u (vysvětluje co zapínáme/vypínáme. Zde je nastaven naCheckBox
).
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.