16. díl - Kontrolky Windows Forms počtvrté

C# .NET Windows Forms Kontrolky Windows Forms počtvrté

MaskedTextBox

MaskedTextBox ve Windows Forms

Jde o speciální druh TextBoxu, kde si můžete jednoduše stanovit, v jakém formátu do něho uživatel bude zadávat data. To se hodí třeba pro získávání času, data, telefonního čísla a dalších podobných údajů. Do pole poté nejde 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ého čísla. Pokud si nevyberete z předdefinovaných, je snadné si vytvořit vlastní. Vyberete <Custom> a do Mask boxu dole napíšete váš vysněný formát, takže třeba: 00.00.0000 - takto načtete kompletní datum.

"L" slouží pro načtení písmen, pokud chcete povolit vynechané místo, tak se používá "?". "A" slouží pro načitání písmen nebo čísel. "0" je pouze pro čísla a "9" dovoluje čísla + volné místo.

RichTextBox

RichTextBox ve Windows Forms

Jedná se vlastně o 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 písma pouze u zvoleného textu. Jde to samozřejmě i pro celý pomocí vlastností ForeColor (barva textu) a BackColor (barva pozadí). Tohle ale umí také obyčejný TextBox.

Výběr konkrétního textu se dělá metodou Select(). Ta bere jako parametry indexy úseku, který chcete formátovat. Tedy začáteční a konečný. To lze udělat jednoduše čísly, nebo si pomoci vlastností. To názorně ukazuje příklad.

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

Tento kód tedy vybere „text“ a s ním pak můžete pracovat. Použít můžete samozřejmě také LastIndexOf(). K vybrané části textu se pak 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, což určuje maximální počet znaků, které je RichTextBox schopen pojmout. RightMargin pak určuje pravé odsazení. Užitečný je také ZoomFactor pro zvětšování obsahu.

Událostí je zde velmi mnoho. TextChange se bude hodit a jak název napovídá, volá se, pokud je měněn text. LinkClicked je aktivní v případě, že bylo kliknuto na URL odkaz.

LinkLabel

LinkLabel ve Windows Forms

Jak se dá vyčíst z názvu (podobně jako u ostatních komponent) jde prostě o Label, který funguje jako HTML odkaz. Vlastnosti jsou tak podobné obyčejnému Labelu. Jeho použití ale není úplně intuitivní. Pomocí vlastnosti LinkArea můžete ještě 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.devbook.cz";
linkLabel1.Links.Add(link);

Tento kód přidáte do konstruktoru okna nebo do eventu Load. Hlavním eventem LinkLabel je LinkClicked. Sem 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 Systém.Diagnos­tics.

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 = 1 minuta) Dulež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() pak Timer logicky deaktivuje.

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á jediný event a tím je Tick, neboli každé uplynutí nastaveného intervalu.

TabControl

TabControl ve Windows Forms

Jedná se o komponentu, kterou do úvodu nejlépe vysvětlí obrázek. Obsahuje několik záložek, do kterých lze umístit další kontrolky (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ůžete i pojmenovat. Jejich plocha tak funguje jako klasické okno – můžete 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í tabů sice nelze deaktivovat, ale můžete je schovat mimo okno. To osvětlí screenshot.

TabControl ve Windows Forms

Na další tab se pak přepíná v kódu třeba pomocí jeho názvu takto:

tabControl1.SelectTab("[název tabu]");

Či pomocí jeho indexu:

tabControl1.SelectedIndex = [číslo indexu];

ProgressBar

Progressbar ve Windows Forms

Hodí se třeba pro informování uživatele o tom, jak pokračuje určitý proces v programu. 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 proveden a konečně Step určuje, o kolik se zaplní, pokud zavoláte metodu PerformStep(). Na výběr jsou tři – 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 po vlastností MarqueeAnimati­onSpeed.

Marquee progressbar nejde jednoduše zapnout a je třeba použít menší "trik". Pokud chcete, aby se pohyboval až po aktivování, musíte ho předtím nastavit třeba na Continuous a pak někde v kódu přidat:

progressBar1.Style = ProgressBarStyle.Marquee;

Analogickým způsobem ho zase zastavíte.

progressBar1.Style = ProgressBarStyle.Continuous;

Reset progressbaru provede nastavením jeho hodnoty (Value) na 0. Můžete ho také schovat pomocí Hide() a pak pomocí Show() zobrazit.


 

  Aktivity (1)

Článek pro vás napsal Paradise
Avatar

Jak se ti líbí článek?
Celkem (6 hlasů) :
4.54.54.54.54.5


 


Miniatura
Předchozí článek
Windows Forms - Dialogy
Miniatura
Všechny články v sekci
Okenní aplikace v C#
Miniatura
Následující článek
Jednoduchá C# kalkulačka v okně

 

 

Komentáře

Avatar
Michal Žůrek (misaz):

1.) v editoru článků je vložit odkaz, hodili by se odkazy do MSDN library, třeba na: http://msdn.microsoft.com/…ox.mask.aspx
tam jsou popsány všechny hodnoty v masce.
2.) hodilo by se uvést že timer se dá spustit prostě nastaveni vlastnosti Enabled na true i v průběhu programu.
3.) světe div se, ale progressbar má i minimum. http://msdn.microsoft.com/…minimum.aspx
4.) nějak mi zde chybí možnost změnit formát části textu. Například pro tvorbu editoru kódu s barevnou syntaxí.
5.) zdrojové kódy si mám vysnít?

Editováno 2.6.2013 13:00
Odpovědět 2.6.2013 12:59
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovědět 2.6.2013 13:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovědět 2.6.2013 13:03
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Michal Žůrek (misaz):

Aha 4ku jsem špatně pochopil. Hodili by se ty kódy.

Odpovědět 2.6.2013 13:04
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Čápka:

Špatně jsi pochopil i dvojku a zdrojový kód je v článku. Nevidím důvod sem házet odkazy na MSDN, stejně jako do fóra házíš odkazy na Google. Aby se z tebe nestal druhý Matesax. V MSDN bude vždy něco navíc, úkolem devbooku není MSDN suplovat, ale poskytnout česky to nejdůležitější.

Odpovědět  +1 2.6.2013 13:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

kdyby popsal jak krom čísel obsloužit i písmena ani neceknu.

Uznávám chybu (chyby).

Odpovědět 2.6.2013 13:13
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Čápka:

S tím máš pravdu, to by se tam hodilo.

Odpovědět 2.6.2013 13:15
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Paradise
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Paradise:

Dík za názor. Článek jsem před vydáním konzultoval s sdracem. Kam myslíš, že by se hodila i písmena?

 
Odpovědět 2.6.2013 16:00
Avatar
Odpovídá na Paradise
Michal Žůrek (misaz):

k MaskedTextBox. Máš tam jak do masky dostat čísla a na písmena jsi zapoměl.

Odpovědět 2.6.2013 16:16
Nesnáším {}, proto se jim vyhýbám.
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 9 zpráv z 9.