WinForms 2 – Button, CheckBox, TextBox, Label a LinkLabel

V druhom diely WinForms série sa pozrieme na prvých päť základných ovládacích prvkov a na prácu s nimi.

Medzi základné ovládacie prvky radím všetky prvky zo záložky Common Controls v Toolboxe. Dnes si povieme na čo slúžia, ich najdôležitejšie vlastnosti a eventy.

Na začiatok informujem o jednej základnej vlastnosti, ktorú majú všetky, alebo väčšina controlov a je to Enabled. Označuje či je control aktívny alebo nie a tým či je použiteľný používateľom.

Button

Button

Button, čiže tlačidlo je najzákladnejší ovládací prvok každej formulárovej aplikácie. Ponúka možnosť jednoduchého vyvolania akcie používateľom. Na to je používaný Click event. Tento event je možné urýchlene vygenerovať dvojitým kliknutím na tlačidlo v designeri.

Pomocou klasických vlastností BackColor a ForeColor je možné zmeniť farbu pozadia alebo popredia (písma). Ako pozadie môže poslúžiť aj obrázok v BackgroundImage, ktorého spôsob zobrazenia je pomocou BackgroundImageLayout možné zmeniť na : Tile dlaždice), Center (Stred), Stretch (Roztiahnutie) alebo Zoom (Zväčšenie). Ďalej je možné pomocou vlastnosti Image vybrať obrázok, ktorý sa bude nachádzať na tlačidle. Je možné použiť aj ImageList, ale o tom až neskôr. Vlastnosť Text obsahuje text zobrazovaný na tlačidle.

Všetky vlastnosti je možné pod ich menom nájsť ako v paneli Properties, tak ako členy objektu v kóde programu.

Na ukážku tu mám túto jednoduchú funkciu, ktorá počíta počet klikov a zobrazí informáciu ako text tlačidla. Meno funkcie je vygenerované podľa mena objektu a typu eventu.

int i = 0;

private void button1_Click(object sender, EventArgs e)
{
    i++;
    //Text tlačidla zmeníme podľa počtu klikov
    button1.Text = "Tlačidlo " + i + " krát"
}

CheckBox

CheckBox

CheckBox je jednoduché zaklikávatelné tlačidlo, často používané na označenie súhlasu používateľom. Hlavným eventom CheckBoxu je CheckedChanged, ktorý označuje zmenu zaškrtnutia, je však možné použiť aj event Click. Event CheckStateChanged je alternatíva k eventu CheckedChanged, ktorá ponúka možnosť čiastočného zaškrtnutia.

Väčšina vlastností CheckBoxu je zhodná z tlačidlom, má však aj niektoré vlastné, a to hlavne CheckedCheckState. Rovnako ako pri eventoch CheckState ponúka navyše možnosť čiastočného zaškrtnutia, zatial čo Checked je jednoduchá bool hodnota.

Jednoduchý príklad je aktivácia / deaktivácia tlačidla v závislosti na tom či je CheckBox zaškrtnutý. To je často používané napríklad pri informácií o súhlase s licenčnými podmienkami.

private void Agree_CheckBox_CheckedChanged(object sender, EventArgs e)
{
    //Hodnotu aktivácie tlačidla nadstavíme podľa hodnoty zaškrtnutia CheckBoxu
    Next_Button.Enabled = Agree_CheckBox.Checked;
}

TextBox

TextBox

TextBox je control určený na získavanie vstupu od používateľa, ako napríklad jeho meno. Základným eventom je tento krát TextChanged, ktorý sa aktivuje vždy keď sa text zmení (nie len používateľom).

Všimnite si v designeri malú čiernu šípku v pravej hornej časti controlu. Táto šípka pri niektorých controloch dáva prístup k ich základným a dôležitým vlastnostiam, v tomto prípade vlastnosti MultiLine označujúcej možnosť viacerých riadkov v tomto controle. Túto vlastnosť je samozrejme možné ovplyvniť aj klasickým spôsobom ako všetky ostatné. Vlastnosť Text označuje Text, ktorý tento control obsahuje. K zaujímavejším vlastnostiam patria : PasswordCharUseSystemPasswordChar, ktoré dovoľujú skryť obsah TextBoxu. PasswordChar dovoľuje nadstaviť vlastný znak a UseSystemPasswordChar používať systémový. pokiaľ ani jedno nieje nadstavené, nebude sa obsah TextBoxu skrývať. Zaujímavá vlastnosť je aj CharacterCasing, ktorá dovolí nadstaviť aby všetky písmená boli zobrazované ako malé alebo veľké.  Vlastnosť ReadOnly zabezpečuje aby nebolo možné obsah TextBoxu upravovať používateľom s stane sa tak z neho pekné pole na zobrazenie informácií. Pri použití dlhšieho textu je vhodné aktivovať jeden alebo obidva Scrollbari pomocou vlastnosti ScrollBars.

Krátka ukážka jednoduchého zabezpečenia maximálnej dĺžky textu. Je to samozrejme možné spraviť aj efektívnejšie, ale na ukážku to stačí.

private void textBox1_TextChanged(object sender, EventArgs e)
{
    //ak je text väčší ako 5, priradíme textu jeho zkrátenú hodnotu 
    if (textBox1.Text.Length > 5) textBox1.Text = textBox1.Text.Substring(0, 5);
}

Label a LinkLabel

Label

Label a LinkLabel je dvojica veľmi podobných prvkov, ktoré aj podobne vyzerajú. Hlavným eventom Labelu je Click zatiaľ čo eventom LinkLabelu je LinkClicked.

Hlavnými vlastnosťami Labelu a LinkLabelu sú Text a vlastnosti definujúce písmo. LinkLabel má však navyše vlastnosti definujúce farbu odkazu LinkColor, farbu navštíveného odkazu VisitedLinkColor a vlastnosť LinkVisited informujúcu či už na daní odkaz používateľ klikol.

LinkLabel má však jednu špecifickú vlastnosť a to práve Link. Táto vlastnosť musí byť inicializovaná z kódu programu. Tu je jeden zo spôsobov ako to môžete dosiahnúť.

//Vytvoríme nový objekt typu LinkLabel.Link
LinkLabel.Link link = new LinkLabel.Link();
//Priradíme mu ako dáta string (ako dáta je možné priradiť objekt ľubovolného typu
link.LinkData = "http://www.akoprogramovat.sk/";
//a následne tento objekt pridáme do zoznamu linkov linkLabelu.
linkLabel1.Links.Add(link);

Je nutné vytvoriť nový Link, pridať mu údaje (napríklad web kam smeruje) a následne ho pridať do zoznamu linkov LinkLabelu.

Event LinkClicked neobsahuje klasický parameter EventArgs, ale parameter typu LinkLabelLinkClickedEventArgs, čo je naozaj pomerne dlhý a chaotický názov pre triedu.

Tento parameter obsahuje práve link na ktorý používateľ klikol a tak uľahčuje jeho otvorenie.

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    //Spustíme nový proces, ktorému ako argument dáme text linku.
    Process.Start((string)e.Link.LinkData); //Text linku je nutné previesť na typ string.
}
download

 Na záver vám sprístupním na stiahnutie malý ukážkový projekt.

Priklad

Nabudúce sa pozrieme na ďalšie základné prvky WinForms aplikácie.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená.

Scroll to Top