W tym wpisie przedstawię wam ciekawą możliwość minimalizacji(ukrycia działania) waszego programu za pomocą NotifyIcon, jest to obiekt z naszego przybornika który daje nam możliwość zwinięcia naszego programu do zasobnika systemowego, co daje mu możliwość działania w tle. Pewnie niektórzy z was zastanawiają się co to jest „zasobnik systemowy”. Są to te małe ikonki obok godziny na pasku zadań.
a w Visualu w przyborniku wygląda to tak:
Dobra, tworzymy nowy projekt i przeciągamy „NotyfiIcon” na niego. Powinniśmy osiągnąć efekt jak na obrazku:
NotyfiIcon ma swoje właściwości które zaraz wykorzystamy.
Najpierw sprawimy, że nasz program będzie się poprostu chował do zasobnika. Musimy dodać mu jakąś ikonę. Najlepiej zrobić to w programie do robienia ikon, znajdziecie taki w dziale downloads. Nasza ikona musi mieć wymiary 32×32 piksele i rozszerzenie typu *.ico. Wracamy do właściwości naszego NotyfiIcon i w miejscu „Icon” znajdujemy naszą ikonę. Zmieniamy również we właściwościach opcje Visible na „false”
Dodajemy do formy przycisk i robimy do niego uchwyt następnie wypełniamy go kodem:
1 2 3 4 5 6 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If NotifyIcon1.Visible = False Then NotifyIcon1.Visible = True Me.Hide() End If End Sub |
Wracamy do projektanta i we właściwościach „NotifyIcon1” przełączamy na zdarzenia (taki mały piorun) i znajdujemy zdarzenie „MouseClick” przyciskamy dwukrotnie lewy przycisk myszki na puste pole obok „MouseClick”
Automatycznie powinno nas przenieść do kodu i automatycznie powinno utworzyć nam uchwyt. Wypełniamy go kodem
1 2 3 4 |
Private Sub NotifyIcon1_MouseClick(sender As Object, e As MouseEventArgs) Handles NotifyIcon1.MouseClick Me.Show() NotifyIcon1.Visible = False End Sub |
efekt powinien być taki:
Po przyciśnięciu przycisku „Schowaj”:
nasz program działa w tle. Teraz przyjrzymy się dodatkowym możliwościom NotifyIcon:
– Jeśli do pętli chowającej program dodamy:
1 2 3 4 5 |
If NotifyIcon1.Visible = False Then NotifyIcon1.Visible = True NotifyIcon1.ShowBalloonTip(2, "Praca w tle...", "Program pracuje w tle. Aby przywrócić okno programu kliknij tutaj!", ToolTipIcon.Info) Me.Hide() End If |
Wygląda to tak, po kliknięciu przycisku schowaj program chowa nam się i w dymku pokazuje komunikat:
NotifyIcon1.ShowBalloonTip(„jak długo ma być wyświetlana wiadomość” , „treść wiadomości”, „rodzaj chmury”)
Rodzaje chmurek (ToolTipIcon.)
– info – informacyjna
– warning – ostrzeżenie
– error – błąd
Warto też zmienić NotifyIcon.Text na jakiś informacyjny aby jak użytkownik najedzie na ikonę miał jakieś konkretne informacje np
1 |
NotifyIcon1.Text = "&Pokaż okno programu" |
Teraz dodamy sobie menu do naszej ikony. Będzie to wyglądać tak, że użytkownik po przyciśnięciu prawym przyciskiem myszy dostanie listę opcji które może wykonać. Wygląda to tak:
W obecnej chwili mamy tak, że gdy naszą ikonę w zasobniku klikniemy lewym albo prawym przyciskiem myszy pojawi nam się okno programu. Musimy to rozdzielić na dwa zdarzenia. Jeśli użytkownik przyciśnie lewy przycisk myszki otwiera mu się program jeśli prawy otwiera się menu programu. aby to zrobić w zdarzeniu MouseClick dodajemy:
1 2 3 4 5 6 |
Private Sub NotifyIcon1_MouseClick(sender As Object, e As MouseEventArgs) Handles NotifyIcon1.MouseClick If e.Button = Windows.Forms.MouseButtons.Left Then Me.Show() NotifyIcon1.Visible = False End If End Sub |
Teraz Forma pokażę się nam tylko po kliknięciu lewym przyciskiem myszki a prawy nie będzie miał żadnego efektu. Utworzymy sobie teraz nasze menu. Wracam do projektanta i w przyborniku znajdujemy „ContextMenuStripe”
I przenosimy go na naszą formę. Po przeniesieniu powinien pojawić się obok NotifyIcon1 po jego naciśnięciu na naszej formie pojawi się widmo naszego menu do którego dodajemy elementy listy menu.
Wygląda to tak jak na obrazku powyżej. Teraz należy to menu podpiąć do naszej NotifyIcon1. Aby to zrobić musimy przejść do właściwości NotifyIcon1 i ustawić w opcji „ContextMenuStrip” nasze menu. Tak jak na obrazku.
Po uruchomieniu nasz program powinien mieć już w pełni funkcjonalne menu. Jeśli mieliście jakieś problemy można pobrać program tutaj: NotifyIcon