Minimalizacja do Tray, z usunięciem ikony z paska zadań.

Część programów, które napiszemy będzie działał w tle, więc czasem niepożądane będzie „zaśmiecanie” paska zadań dodatkowymi ikonkami programów, które mało kiedy będą musiały być aktywne. Dlatego tym razem przedstawię jak zminimalizować program do tray’a z usunięciem go z paska zadań.

Przedstawiony sposób na minimalizację do tray’a z usunięciem ikony z paska zadań jest przedstawiony na przykładzie autorskiego programu COM detect, dlatego niektóre odniesienia, oraz zmienne dotyczą tego programu.
Proszę również o zapoznanie się z wpisem dotyczącym powiadomień, gdyż informacje które są tam zawarte są konieczne do działania przedstawionego tutaj kodu.

Przed dodaniem kodu, który będzie powodował minimalizowanie programu z usunięciem go z paska zadań, należy najpierw dodać przycisk, który będzie powodował przywrócenie naszego programu – bo bez tego jedynym sposobem będzie zakończenie procesu z poziomu menedżera zadań. Zrobimy to w ten sposób, że po kliknięciu prawym klawiszem myszy na ikonkę która znajduje się już w trayu (pojawia się ona przy okazji tworzenia powiadomień – jak to zrobić, opisane jest w tym wpisie) pojawia się rozwijane menu. W pierwszej kolejności z przybornika w kategorii Menu i paski narzędzi szukamy i przenosimy do naszej formatki ContextMenuStrip. Na formatce pojawia się rozwijane menu, w którym dodajemy dwa przyciski – Przywróć, oraz Zamknij. Dzięki temu, oprócz przywrócenia programu, będziemy mogli je dodatkowo zamknąć.

Klikając dwa razy na zamknij w obsłudze przycisku wpisujemy

Close();

co spowoduje zamknięcie programu. We właściwościach notifyIcon, należy jeszcze dodać obsługę tego menu – w kategorii Zachowanie w polu ContextMenuStrip wybieramy nazwę naszego menu. Kompilujemy i uruchamiamy program – sprawdzamy czy działa zamykanie programu z poziomu menu, które pojawia się po wybraniu ikonki w tray’u.

Aby przywrócić aplikację, należy dodać w obsłudze przycisku Przywróć poniższy kod. Dzięki temu po kliknięciu na ten przycisk nasza aplikacja powróci na ekran monitora.

WindowState = FormWindowState.Normal;

Możemy już sprawdzić działanie programu. Po uruchomieniu programu minimalizujemy nasz program, a następnie klikamy prawym klawiszem myszy na ikonę naszego programu, która znajduje się w tray’u i z menu które się pokazało wybieramy przywróć. Program powinien ponownie pojawić się na ekranie.

Kolejnym krokiem jest, aby po zminimalizowaniu ikonka w pasku zadań znikała, a podczas przywracania aplikacji pojawiała się na nim. W tym celu wykorzystamy zdarzenie dla naszej formatki, które jest wykonywane w przypadku zmiany wielkości formatki. Zdarzenie to nazywa się LocationChanged i znajduje się w właściwościach głównej formatki (wybieramy naszą formatkę i szukamy w zdarzeniach nazwy LocationChanged).

if (WindowState == FormWindowState.Minimized)
{
	this.ShowInTaskbar = false;
}
else
	this.ShowInTaskbar = true;

Aby ukryć ikonkę w pasku zadań, należy podczas minimalizacji zmienić jedną właściwość naszego programu – jest to ShowInTaskbar. Jak sama nazwa wskazuje, dotyczy ona pokazania jej w pasku zadań. Musimy tą właściwość ustawić na flase gdy program jest minimalizowany, a na true gdy jest przywracany. W tym celu gdy jest wywoływane zdarzenie zmiany lokalizacji, musimy sprawdzić jaka jest pozycja naszego programu, wykorzystując WindowState. Sprawdzamy czy jest równa Minimized, jeżeli tak to zmień właściwość aplikacji na false, w przeciwnym razie zmień na true.

Dodatkowo można jeszcze dodać reakcję na dwuklik na ikonkę znajdującą się w tray’u, aby zmieniała stan ze zminimalizowanej na przeciwną naszego programu. Wybieramy więc kontrolkę notifyIcon, a następnie w zdarzeniach szukamy akcji DoubleClick. Klikamy na nią dwukrotnie i w obsłudze tego zdarzenia dodajemy następujący kod:

if(WindowState == FormWindowState.Minimized)
{
	WindowState = FormWindowState.Normal;
}
else{
	WindowState = FormWindowState.Minimized;
}

Minusem takiego rozwiązania jest to, że program w zdarzeniu od zmiany lokalizacji jest wykonywany za każdym razem gdy zmienimy jego położenie.

Dzięki niemu, po dwu-kliku na ikonce program będzie się minimalizował, bądź przywracał.

Mam nadzieję, że udało mi się w prosty sposób przedstawić jak dokonać minimalizowania do tray z usunięciem ikony z Paska zadań. Jeżeli masz jakieś problemy, bądź coś jest niejasne, opisz swój problem w komentarzu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *