WinForms 3 – RadioButton, DateTimePicker, MaskedTextBox, ComboBox, NumericUpDown a RichTextBox

Tretí diel série Windows Forms je venovaný ďalším, tentokrát šiestim ovládacím prvkom zo základnej skupiny.

Tentokrát sa pozrieme na šesť užitočných ovládacích prvkov, ktoré ponúkajú oproti tým z minulého dielu o niečo zaujímavejšie možnosti. Opäť budem vymenovávať len tie vlastnosti a eventy prvkov, ktoré si sami nevyvodíte. Napríklad ak som v minulom diely napísal, že TextBox ma vlastnosť Text, tak je pochopiteľné, že prvky odvodené od neho majú tu vlastnosť tiež. Ale teraz sa už pozrime na prvý control.

RadioButton

RadioButton

RadioButton je podobný CheckBoxu, a je to tiež zaklikávatelné tlačidlo. Narozdiel od neho však dva a viaceré prepojené radioboxi nemôžu byť zaškrtnuté naraz a teda ako náhle zaškrtnete iný, ten predošlí sa automaticky odškrtne. Prepojenie RadioButtonov je riešené automaticky v rámci kontajneru v ktorom sú (o kontajneroch si povieme neskôr). Oproti Checkbox však majú len dve možnosti zaškrtnutia – true alebo false. Rovnako ako CheckBox aj RadioButton má event CheckedChanged.

Vlastnosti RadioButtonu sú tiež podobné, neobsahujú však vlastnosť CheckState, ale len Checked.

RadioButtoni sú vhodné na jednoduché rozhodnutie, napríklad výber pohlavia. V príklade bude podľa vybraného pohlavia nadstavený rod textu.

private void male_Radio_CheckedChanged(object sender, EventArgs e)
{
        if (male_Radio.Checked) narodil_Label.Text = "Kedy ste sa narodil?";
        else narodil_Label.Text = "Kedy ste sa narodila?";
}

DateTimePicker

DateTimePicker

DateTimePicker je (ako už názov napovedá) určený na výber dátumu.Po kliknutí na ovládací prvok sa používateľovi zobrazí malý kalendár, kde si môže ľahko vybrať vyhovujúci dátum. Jeho hlavným eventom je ValueChanged, ktorý informuje o zmene hodnoty.

Hlavnou výhodou je jednoduchá kontrola povolených hodnôt vďaka vlastnostiam MaxDateMinDate. Vlastnosť Value obsahuje aktuálne vybraný dátum (a jeho predvolenú hodnotu). Zaujímavá je vlastnosť CustomFormat, ktorá vám dovolí zabezpečiť aby bol dátum zobrazovaný vo formáte, ktorý si vy vyberiete.

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
        int vek = DateTime.Today.Year - dateTimePicker1.Value.Year;
        if (dateTimePicker1.Value > DateTime.Today.AddYears(-vek)) vek--;
        string rok = "";
        switch (vek)
        {
            case 1: rok = "rok"; break;
            case 2: 
            case 3: 
            case 4: rok = "roky"; break;
            default: rok = "rokov"; break;
        }
        vek_Label.Text = "Váš vek je " + vek + rok;
}

MaskedTextBox

MaskedBox

MaskedTextBox je zaujímavý prvok podobný TextBoxu, aj keď nie až tak používaný. Jeho hlavný vlastnosť ako názov napovedá je, že môžete textu preddefinovať tvar ktorý musí spĺňať a tak je vhodný napríklad pri zadávaní telefónnych čísel. Jeho vlastnosťou je TextChanged rovnako ako pri TextBoxe, ale aj MaskInputRejected, ktorý informuje o tom že sa používateľ pokúsil zadať niečo, čo nespĺňa tvar, a informuje o tom, ale aj o presnej pozícií kde sa táto chyba stala.

Hlavnou vlastnosťou MaskedTextBoxu je Mask, do ktorej zadávate masku. (Povolené možnosti)

Kliknite pre zobrazenie

Znak Význam Príklad
0 Číslo 0-9
9 Číslo alebo medzera (volitelné) 0-9, medzera
# Číslo alebo medzera * (volitelné) 0-9, medzera
L Písmeno A-Z, a-z
? Písmeno (volitelné) A-Z, a-z
& Znak A-Z, 0-9, špeciálne znaky
C Znak (volitelné) A-Z, 0-9, špeciálne znaky
A Alfanumerický znak A-Z, 0-9
a Alfanumerický znak (volitelné) A-Z, 0-9
. (bodka) Znak desatinej čiarky ** ,.
, (čiarka) Znak tisícín ** ,
: (dvojbodka) Znak času ** :
/ (lomeno) Znak dátumu ** .-/
$ (dolár) Znak meny ** $€
< (znak menšie) Zmení všetky nasledujúce
písmena na malé
A zobrazí ako a
> (znak väčšie) Zmení všetky nasledujúce
písmena na veľké
a zobrazí ako A
| (znak OR) Ukončí zmenu nasledujúcich
písmen
\ (obrátene lomeno) Znak úniku. Zobrazí nasledujúci
znak.
\\ zobrazí ako \
Ostatné znak Bude zobrazený daný znak

* – v prípade že nebude vyplnené zobrazí sa medzera
** – zobrazí sa znak podľa nastavení systému

V nasledujúcom príklade si zobrazíme informáciu o tom, že bol použitý zlí znak v záhlaví okna.

private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
    this.Text = e.RejectionHint.ToString() + "@" + e.Position.ToString();
}

ComboBox

ComboBox

ComboBox je ovládací prvok, ktorý vám umožní robiť rozbalovacie zoznamy dovoľujúce výber, ale zároveň aj do neho písať vlastný text. Môžete ich vidieť v internetovom prehliadači ako adresný riadok. Okrem eventu TextChanged obsahuju aj event SelectedIndexChanged označujúci zmenu vybranej položky v zozname.

Jeho vlastnosť Items predvolené položky, ktoré bude obsahovať, vlastnosť DropDownStyle vám zas umožňuje použiť ComboBox len ako rozbalovací zoznam bez možnosti písania vlastného textu, alebo ho ponechať neustále rozbalený. Vlastnosti AutoCompleteModeAutoCompleteSource  vám dovolia zapnúť automatické dopĺňanie.

Nasledujúci príklad aktivuje tlačidlo pokiaľ sa zmení výber.

private void deti_CB_SelectedIndexChanged(object sender, EventArgs e)
{
    OK_BUTTON.Enabled = true;
}

NumericUpDown

NumericUpDown

NumericUpDown je ďalší vstupný prvok pre používateľa, tento krát zameraný na vstup číslic. Jeho hlavný event je ValueChanged označujúci zmenu hodnoty.

Podobne ako DiteTimePicker obsahuje vlastnosť Value obsahujúcu hodnotu, ale jedná z jeho vlastností je aj Hexadecimal, vďaka čomu môže byť číslo zobrazené v šestnástkovej sústave. Samozrejme obsahuje vlastnosti MaximumMinimum označujúce rozsah čísel, vlastnosť Increment, ktorá udáva krok po ktorom sa číslo zväčšuje a DecimalPlaces, ktorá udáva počet desatinných čísel.

RichTextBox

RichTextBox

Na záver máme všemocný RichTextBox, ktorý podobne ako TextBox umožňuje zadávanie textu, na rozdiel od neho však text môže byť formátovaný (ako napríklad vo Worde).  Rovnako ako TextBox je jeho hlavným eventom TextChanged.

Vlastnosti RichTextBoxu sú veľmi podobné ako tie, ktoré má TextBox. Nie je ich teda nutné popisovať. Prečo som si však RichTextBox nechal až na záver dnešného dielu? Na rozdiel od ostatných má množstvo členov prístupných len z kódu programu, na ktoré sa teraz pozrieme.

  • Rtf – obsahuje text vo formáte Rtf uložený ako string
  • SelectedRtf – obsahuje aktuálne vybraný Rtf text
  • SelectedText – obsahuje aktuálne vybraný text (bez formátovania)
  • SelectionStart – začiatok výberu
  • SelectionLength – dĺžka výberu
  • SelectionFont, SelectionColor, … – Farba, font, … vybraného textu.
  • metóda Find() – nájde text zadaný ako parameter a vráti pozíciu jeho prvého výskytu. Je možné zadať štartovný bod hľadania.

Tento príklad vyberie časť textu v RichTextBoxe a zafarbí ju na modro.

richTextBox1.SelectionStart = richTextBox1.Find(phone_Masked.Text);
richTextBox1.SelectionLength = phone_Masked.Text.Length;
richTextBox1.SelectionColor = Color.Blue;

Ukážka

download

Na záver tu pre vás opäť mám jednoduchú ukážku čo je s týmito ovládacími prvkami možné vytvoriť.

Priklad

To by bolo na dnes všetko, a nabudúce si ukážeme už predposlednú várku základných ovládacích prvkov.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *


The reCAPTCHA verification period has expired. Please reload the page.

Návrat hore