Tray ikona v C#

C# .NET Windows Forms Tray ikona v C#

Včera jsem si chtěl do mé aplikace přidat tray ikonu, ale bohužel nevěděl jsem jak na to, tak jsem začal googlit a bádat jak to vlastně funguje. Je to tak snadné, až jsem tomu nemohl uvěřit. Myslím že nebude na škodu, když to tu bude.

Co je to vlastně tray ikona?

Tray ikona je vlastně "taková ta malá ikonka v pravo v liště". Slouží pro urychlený přístup a tak podobně, každý určitě ví. Myslím, že je to i mnohem lepší pro přehlednost.

Takže vytvoříme si nový projekt Windows Form Application, název si zvolíme libovolně třeba "tray ikonka". Upravíme si okno dle svého gusta. Poté si otevřeme Toolbox a přidáme do našeho projektu notifyIcon. Náš projekt by tedy měl vypadat nějak takto.

Tray ikona

Nyní budeme editovat properties notifyIcon1. Vybereme si tedy nějakou ikonku, kterou chceme aby se zobrazovala mezi ostatními tray ikonami. Teď pokud zapneme aplikaci, tak můžeme vidět naší tray ikonu mezi ostatními v liště.

Aby to nebylo takhle suché a určitě každý bude chtít aby "když minimalizuji okno" tak aby zmizelo a zůstala nám jen tray ikonka.

To se dělá následovně : Vybereme Form1 properties vybereme si event-resize. Do něj zapíšeme následující.

private void Form1_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
this.Hide();
    }
    else if (FormWindowState.Normal == this.WindowState)
    {
        // co chcete, aby se stalo, když bude form1 v normálním módu. Např. notifyIcon.Visible = false;
    }

}

Teď když spustíme aplikaci a minimalizujeme jí, tak se nám schová a zůstane jen naše tray ikonka. Teď se vrátíme zpět na properties notifyicon a vybereme event, třeba double mouse click. Do něj zapíšeme :

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.Show();
}

Ale jak jste si určitě všimli, nyní když spustíme aplikaci, minimalizujeme jí a nahodíme zpět přes tray ikonku, tak vlastně se objeví... ale jen na liště jako ikonka a musíme jí rozkliknout aby se nám ukázal dialog. To je protože když jsme jí minimalizovali, tak vlastně zůstala minimalizovaná a tak se nám i vyvolá zpět minimalizovaná. To ošetříme přidáním následujícího příkazu do mouse double click na notifyicon.

WindowState = FormWindowState.Normal;

Takže by to mělo vypadat následovně:

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.Show();
    WindowState = FormWindowState.Normal;
}

Jak vidíme, vše už je nyní v pořádku. Teď si ještě ukážeme poslední věc a sice menu po kliknutí pravým tlačítkem myši na tray ikonku. Do projektu přidáme z Toolboxu "ContextMenuStrip". Pak si do menu vložíme nějaké ty hodnoty, já jsem zvolil "menu1,menu2,ko­nec".

Context menu u tray ikony v C# .NET

Klikneme na notifyIcon1 properties -> ContextMenuStrip a vybereme právě naše menu. Já jsem jen do menu konec zapsal:

this.Close();

Aby se nám aplikace ukončila, každý si udělá menu podle sebe, jak je třeba. Nyní spustíme aplikaci, pravým tlačítkem klikneme na tray ikonku a tadá, je tam právě naše menu, které lze jednoduše modifikovat.

Jako poslední bod bych vám chtěl ještě ukázat, jak vlastně v tray ikoně vyvolat takovou tu informační bublinu. Opět otevřeme notifyicon properties a nastavíme BalloonTipIcon na hodnotu Info. Nyní BalloonTipText slouží k nějakému tomu infu, tedy nějaké informaci, kterou chcete sdělit. BalloonTipTitle je titulek bubliny.

Do aplikace si přidáme nějaký čudlík (button). Klikneme na něj, aby se nám otevřel kód "co se stane, když na čudlík kliknu..." a zapíšeme následující.

private void button1_Click(object sender, EventArgs e)
{
    notifyIcon1.ShowBalloonTip(5000);
}

5000 je doba jak dlouho se má info ukazovat... 5000 je samozřejmě 5 sekund. No a konečně spustíme aplikaci a klikneme na "čudlík". Tadá, info se nám tedy opravdu zobrazí.

trayikona

 

Stáhnout

Staženo 376x (98.34 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (1)

Článek pro vás napsal Зайчик
Avatar
Коммунизм для нашего будущего!

Jak se ti líbí článek?
Celkem (7 hlasů) :
4.142864.142864.142864.14286 4.14286


 


Miniatura
Předchozí článek
Hra Šibenice #9 - Distribuce
Miniatura
Všechny články v sekci
Okenní aplikace v C#
Miniatura
Následující článek
Vlastní ProgressBar v C#

 

 

Komentáře

Avatar
sobo.milan
Člen
Avatar
sobo.milan:

Úspěšně dokončeno, no nato že jsem viděl visual studio poprvé a hledal asi půl hodiny events tak se můžu pochválit. Jinak Tutoriál super! :) Díky :) Jen tak dál :)

 
Odpovědět 5.1.2013 13:33
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 1 zpráv z 1.