NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 16 - Ovládací prvky Windows Forms počtvrté

V minulé lekci, Windows Forms - Dialogy, jsme se věnovali aplikačnímu menu a dialogům.

Dnes se podíváme jak se používají ovládací prvky RichTextBox, MaskedTextBox, TabControl, LinkLabel, Timer a ProgressBar.

MaskedTextBox

MaskedTextBox ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

Jde o speciální druh TextBoxu, kde si můžeme jednoduše stanovit, v jakém formátu do něj uživatel bude zadávat data. To se hodí např. pro získávání telefonního čísla a dalších podobných údajů. Do pole poté nelze zadat nic jiného, než povolený formát, což nahrazuje nutnost vstupy validovat.

Klíčovou vlastností je zde Mask, která vlastně určuje formát zadávané hodnoty. Pokud si nevyberete z předdefinovaných, je snadné si vytvořit vlastní. Vyberete <Custom> a do Mask boxu níže napíšete váš vysněný formát, např.: 00.00.0000 by bylo pro zadání konkrétního datumu.

Kromě nuly můžeme použít znak L pro písmena. Pokud chceme povolit jakýkoli znak, používá se ?. A slouží pro zadávání písmen nebo čísel. 0 je tedy pouze pro čísla a 9 dovoluje čísla + volné místo.

RichTextBox

RichTextBox ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

RichTextBox je takový TextBox na steroidech. Umožňuje pokročilé formátování textu a další vychytávky. Hlavní je asi to, že můžete měnit font či barvu pouze zvolené části textu. Jde to samozřejmě i pro celý text pomocí vlastností ForeColor (barva textu) a BackColor (barva pozadí). Toto ale umí také obyčejný TextBox.

Výběr konkrétní části textu provedeme metodou Select(). Ta bere jako parametry indexy úseku, který chceme formátovat. Tedy počáteční a konečný. To lze udělat jednoduše čísly, nebo si pomoci vlastnostmi/me­todami. To názorně ukazuje příklad níže.

richTextBox1.Select(richTextBox1.Text.IndexOf("text"), "text".Length);
// nebo
richTextBox1.Select(0, 10);

Tento kód tedy vybere text "text" a s tím poté můžeme pracovat. Použít bychom mohli samozřejmě i LastIndexOf(). K vybrané části textu se poté přistupuje pomocí Selection[Font, BackColor, atd]. Takže úprava by vypadala nějak takto:¨

richTextBox1.SelectionFont = new Font("Microsoft sans", 20);
richTextBox1.SelectionBackColor = Color.Black;
richTextBox1.SelectionColor = Color.Blue;

Z vlastností stojí za zmínku MaxLength, která určuje maximální počet znaků, které je RichTextBox schopen pojmout. RightMargin určuje pravé odsazení. Užitečný je také ZoomFactor pro zvětšování obsahu.

Událostí je zde mnoho. TextChanged se bude hodit a jak název napovídá, volá se, když se text změnil. LinkClicked se vyvolá v případě, že bylo kliknuto na URL odkaz v textu.

LinkLabel

LinkLabel ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

Jak se dá vyvodit z názvu (podobně jako u ostatních komponent) jde jednoduše o Label, který funguje jako odkaz na webovou adresu. Vlastnosti jsou též podobné obyčejnému Labelu. Jeho použití nicméně není úplně intuitivní. Pomocí vlastnosti LinkArea můžeme vybrat na jakou část LinkLabelu půjde kliknout. Start určuje začáteční index a Length počet znaků. Základní použití by mohlo vypadat takto:

LinkLabel.Link link = new LinkLabel.Link();
link.LinkData = "http://www.itnetwork.cz";
linkLabel1.Links.Add(link);

Kód výše přidáme do konstruktoru okna nebo do události Load formuláře. Hlavní událostí LinkLabel je LinkClicked. Do ní je potřeba napsat následující kód:

Process.Start(e.Link.LinkData as String);

Ten pošle příkaz systému a nastavená URL adresa se otevře v defaultním prohlížeči. Pro použití je třeba přidat using System.Diagnostics.

Timer

Jedná se o velmi šikovnou komponentu, která umožňuje provést určité akce automaticky v daném časovém intervalu. Klíčovou vlastností je zde Interval, zadává se v milisekundách a udává rozestupy mezi akcemi. 60 000 ms je 1 minuta. Důležitá je také vlastnost Enabled, jež určuje, jestli je Timer aktivní po spuštění programu. Druhou možností je spustit ho metodou Start(). Metoda Stop() poté Timer logicky zastaví.

Timer nemá vlastní vlákno, pamatujte tedy na to, že při vykonávání náročnějšího úkonu "zasekne" celý formulář.

Timer má jedinou událost a tou je Tick, neboli každé uplynutí nastaveného intervalu.

TabControl

TabControl ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

Jedná se o ovládací prvek se záložkami, který do úvodu nejlépe vysvětlí obrázek. Obsahuje několik záložek, do kterých lze umístit další prvky (jako např. Panel) a mezi záložkami lze poté přepínat. Jednotlivé "záložky" se přidávají ve vlastnostech TabControl pod položkou TabPages, kde je můžeme i pojmenovat. Fungují jako kontejner, můžeme do nich přidávat další komponenty. Další vlastnosti slouží výhradně na změnu vzhledu.

TabControl můžete také použít třeba jako průvodce instalací. Tlačítka na přepínání záložek sice nelze deaktivovat, ale můžete je schovat mimo okno. To osvětlí screenshot.

TabControl ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

Na další záložku se poté přepíná v kódu např. pomocí jejího názvu takto:

tabControl1.SelectTab("[název záložky]");

Či pomocí jejího indexu:

tabControl1.SelectedIndex = [index];

ProgressBar

Progressbar ve Windows Forms - Windows Forms - Okenní aplikace v C# .NET

Hodí se např. pro informování uživatele o tom, jak pokračuje určitý proces v aplikaci. Vlastnost Maximum určuje, kolik "políček" daný progressbar má. Důležitá je také vlastnost Style, která určuje, v jakém stylu bude progress bar vykreslen a konečně Step určuje, o kolik se zaplní, pokud zavoláte metodu PerformStep(). Na výběr jsou tři možnosti - Blocks (nabývá skokově), Continuous (nabývá plynule) a Marquee. Poslední jmenovaný se liší. Pokud je nastaven, ProgressBar nenabývá, ale plynule "jezdí" bez zastavení. Dá se nastavit také rychlost, najdete ji pod vlastností MarqueeAnimationSpeed.

Marquee ProgressBar nelze jednoduše zapnout a je třeba použít menší "trik". Pokud chcete, aby se pohyboval až po aktivování, musíte jej předtím nastavit např. na Continuous a poté někde v kódu zavolat:

progressBar1.Style = ProgressBarStyle.Marquee;

Analogickým způsobem jej i zastavíte.

progressBar1.Style = ProgressBarStyle.Continuous;

Reset ProgressBaru provedeme nastavením jeho hodnoty (Value) na 0. Můžeme ho také schovat pomocí metody Hide() a poté pomocí Show() opět zobrazit.

V příští lekci, Tvoříme vlastní Syntax Highlighter pomocí RichTextBox v C#, si vytvoříme vlastní editor zvýrazňující kód, jako to dělá Visual Studio :)


 

Předchozí článek
Windows Forms - Dialogy
Všechny články v sekci
Windows Forms - Okenní aplikace v C# .NET
Přeskočit článek
(nedoporučujeme)
Tvoříme vlastní Syntax Highlighter pomocí RichTextBox v C#
Článek pro vás napsal Paradise
Avatar
Uživatelské hodnocení:
23 hlasů
Aktivity