16. diel - Ovládacie prvky Windows Forms štvrtýkrát
V minulej lekcii, Windows Forms - Dialógy , sme sa venovali aplikačnému menu a
dialógom. Dnes sa pozrieme ako sa používajú ovládacie prvky
RichTextBox, MaskedTextBox, TabControl,
LinkLabel, Timer a ProgressBar.
MaskedTextBox

Ide o špeciálny druh TextBox u, kde si môžeme jednoducho
určiť, v akom formáte doň užívateľ bude zadávať dáta. To sa hodí
napr. Pre získavanie času, dátumu, telefónneho čísla a ďalších
podobných údajov. Do poľa potom nie je možné zadať nič iné, ako
povolený formát, čo nahrádza nutnosť vstupy validovať.
Kľúčovou vlastnosťou je tu Mask, ktorá vlastne určuje
formát zadávaného čísla. Ak si nevyberiete z preddefinovaných, je ľahké
si vytvoriť vlastné. Vyberiete <Custom> a do Mask boxu
nižšie napíšete váš vysnívaný formát, napr .: 00.00.0000
by bolo pre zadanie konkrétneho dátumu.
Okrem nuly môžeme použiť znak L pre písmená. Ak chceme
povoliť vynechané miesto, používa sa ?. A slúži
na zadávanie písmen alebo číslic. 0 je teda iba pre čísla a
9 dovoľuje čísla + voľné miesto.
RichTextBox

RichTextBox je taký TextBox na steroidoch.
Umožňuje pokročilé formátovanie textu a ďalšie vychytávky. Hlavné je
asi to, že môžete meniť font či farbu iba zvolenej časti textu. Ide to
samozrejme aj pre celý text pomocou vlastností ForeColor (farba
textu) a BackColor (farba pozadia). Toto ale vie tiež obyčajný
TextBox.
Výber konkrétnej časti textu vykonáme metódou Select(). Tá
berie ako parametre indexy úseku, ktorý chceme formátovať. Teda
počiatočný a konečný. To možno urobiť jednoducho číslami, alebo si
pomôcť vlastností. To názorne ukazuje príklad nižšie.
richTextBox1.Select(richTextBox1.Text.IndexOf("text"), "text".Length); // nebo richTextBox1.Select(0, 10);
Tento kód teda vyberie text "text" as tým potom môžeme
pracovať. Použiť by sme mohli samozrejme i LastIndexOf(). K
vybrané časti textu sa potom pristupuje pomocou
Selection[Font, BackColor, atd]. Takže úprava by vyzerala nejako
takto: ¨
richTextBox1.SelectionFont = new Font("Microsoft sans", 20); richTextBox1.SelectionBackColor = Color.Black; richTextBox1.SelectionColor = Color.Blue;
Z vlastností stojí za zmienku MaxLength, ktorá určuje
maximálny počet znakov, ktoré je RichTextBox schopný pojať.
RightMargin určuje pravé odsadenie. Užitočný je tiež
ZoomFactor pre zväčšovanie obsahu.
Udalosťou je tu mnoho. TextChanged sa bude hodiť a ako názov
napovedá, volá sa, keď sa text zmenil. LinkClicked sa vyvolá v
prípade, že bolo kliknuté na URL odkaz v texte.
LinkLabel

Ako sa dá vyvodiť z názvu (podobne ako u ostatných komponentov) ide
jednoducho o Label, ktorý funguje ako odkaz na webovú adresu.
Vlastnosti sú tiež podobné obyčajnému Label u. Jeho použitie
však nie je úplne intuitívne. Pomocou vlastnosti LinkArea
môžeme vybrať na akú časť LinkLabel u pôjde kliknúť.
Start určuje začiatočné index a Length počet
znakov. Základné použitie by mohlo vyzerať takto:
LinkLabel.Link link = new LinkLabel.Link(); link.LinkData = "http://www.itnetwork.cz"; linkLabel1.Links.Add(link);
Kód vyššie pridáme do konstruktoru okna alebo do udalosti
Load formulára. Hlavnou udalosťou LinkLabel je
LinkClicked. Do nej je potreba napísať nasledujúci kód:
Process.Start(e.Link.LinkData as String);
Ten pošle príkaz systému a nastavená URL adresa sa otvorí v defaultným
prehliadači. Pre použitie je potrebné pridať
using System.Diagnostics.
Timer
Jedná sa o veľmi šikovnú komponent, ktorá umožňuje vykonať určité
akcie automaticky v danom časovom intervale. Kľúčovou vlastnosťou je tu
Interval, zadáva sa v milisekundách a udáva rozostupy medzi
akciami. 60 000 ms je 1 minúta. Dôležitá je tiež vlastnosť
Enabled, ktoré určuje, či je Timer aktívny po
spustení programu. Druhou možnosťou je spustiť ho metódou
Start(). Metóda Stop() potom Timer
logicky zastaví.
Timer nemá vlastné vlákno, pamätajte teda na
to, že pri vykonávaní náročnejšieho úkone "zasekne" celý formulár.
Timer má jedinú udalosť a tou je Tick, čiže
každé uplynutí nastaveného intervalu.
TabControl

Jedná sa o ovládací prvok so záložkami, ktorý do úvodu najlepšie
vysvetlí obrázok. Obsahuje niekoľko záložiek, do ktorých možno umiestniť
ďalšie prvky (ako napr. Panel) a medzi záložkami možno potom
prepínať. Jednotlivé "záložky" sa pridávajú vo vlastnostiach
TabControl pod položkou TabPages, kde ich môžeme aj
pomenovať. Fungujú ako kontajner, môžeme do nich pridávať ďalšie
komponenty. Ďalšie vlastnosti slúži výhradne na zmenu vzhľadu.
TabControl môžete tiež použiť napríklad ako sprievodca
inštaláciou. Tlačidlá na prepínanie záložiek síce nedá deaktivovať,
ale môžete ich schovať mimo okno. To osvetlí screenshot.

Na ďalšiu záložku sa potom prepína v kódu napr. Pomocou jej názvu takto:
tabControl1.SelectTab("[název záložky]");
Či pomocou jej indexu:
tabControl1.SelectedIndex = [index];
Progressbar

Hodí sa napr. Pre informovanie používateľov o tom, ako pokračuje
určitý proces v aplikácii. Vlastnosť Maximum určuje, koľko
"políčok" daný progressbar má. Dôležitá je tiež vlastnosť
Style, ktorá určuje, v akom štýle bude progress bar vykreslený
a konečne Step určuje, o koľko sa zaplní, ak zavoláte metódu
PerformStep(). Na výber sú tri možnosti - Blocks
(nadobúda skokovo), Continuous (nadobúda plynulo) a
Marquee. Posledný menovaný sa líšia. Ak je nastavený,
ProgressBar nenadobúda, ale plynule "jazdí" bez zastavenia. Dá
sa nastaviť aj rýchlosť, nájdete ju pod vlastností
MarqueeAnimationSpeed.
Marquee ProgressBar nemožno jednoducho zapnúť a
je potrebné použiť menšie "trik". Ak chcete, aby sa pohyboval až po
aktivovaní, musíte ho predtým nastaviť napr. Na Continuous a
potom niekde v kóde zavolať:
progressBar1.Style = ProgressBarStyle.Marquee;
Analogickým spôsobom ho i zastavíte.
progressBar1.Style = ProgressBarStyle.Continuous;
Reset ProgressBar U prevedenia nastavením jeho hodnoty
(Value) na 0. Môžeme ho tiež schovať pomocou
metódy Hide() a potom pomocou Show() opäť
zobraziť. V budúcej lekcii, Vlastné ovládacie prvky v C # .NET , si ukážeme ako si vytvoriť svoj
vlastný ovládací prvok.
