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.