środa, 16 marca 2011

[C#] Minimalizowanie programu do tray-a oraz tworzenie menu kontekstowego przy użyciu NotifyIcon.

          Kiedy pierwszy raz próbowałem zminimalizować program do traya, przy wykorzystaniu VS C++ 6.0, było to bardzo nie przyjemne i dość skomplikowane zadanie dla początkującego programisty. Jednak w przypadku techonologii .NET twórcy stworzyli dla nas bardzo intuicyjną klasę o nazwie NotifyIcon. Poniżej przedstawię prosty przykład w jaki sposób zminimalizować aplikację do tray-a oraz jak dodać stworzonemu skrótowi niezbędne menu kontekstowe.

1. Tworzymy nowy projekt w Visual Studio C#.
File->New->Project->Windows Form Application.



2. Dodajemy do formy przycisk (button1), którego zadaniem będzie minimalizowanie programu.
Tworzenie nowej formy z przyciskiem.
3. Następnie z Toolboxa dodajemy do naszej formy dwa elementy znajdujące się poniżej.

NotifyIcon
ContextMenuStrip

Nasza forma powinna teraz wyglądać mniej więcej tak:
Pomimo, że ContextMenuStrip jest widoczny na naszej formie w projekcie, po zbudowaniu aplikacji będzie niewidoczne ponieważ jest to tylko poglądowy widok, który ułatwia projektowanie menu.

4.W kolejnym punkcie dodajemy w trybie edytorskim (klikając myszką)  do utworzonego menu dwa przyciski Pokaż program, oraz Zakończ.

 
5.Stworzyliśmy już menu oraz obiekt NotyfiIcon. Czas napisać trochę kodu. Klikamy dwukrotnie na dodany przycisk i w funkcji obsługującej zdarzenie kliknięcia piszemy następujący kod:


   1:          private void button1_Click(object sender, EventArgs e)
   2:          {
   3:              notifyIcon1.Visible = true;
   4:              notifyIcon1.Text = "Program Minimalizujący";
   5:              notifyIcon1.Icon = this.Icon;
   6:              notifyIcon1.ContextMenuStrip = contextMenuStrip1;
   7:              this.ShowInTaskbar = false;
   8:              this.Visible = false;
   9:          }

W lini 3 ustawiamy widoczność ikonki na true, tekst wyświetlany po najechaniu na ikonkę oraz co bardzo ważne ikonkę. Jak widzimy przypisuję tutaj obiektowi notifyIcon ikonkę wykorzystywaną przez formę. Następnie przypisujemy obiektowi wcześniej stworzone menu kontekstowe. Na koniec ustawiamy aby program był niewidoczny oraz usuwamy go z paska zadań.

6. Nasz program już można minimalizować, natomiast po kliknięciu na niego prawym przyciskiem myszy pojawia się nam menu. W kolejnym kroku oprogramujemy przyciski menu. W trybie edycji klikamy dwukrotnie na przycisk Pokaż program i dodajemy poniższy kod:



   1:          private void pokażProgramToolStripMenuItem_Click(object sender, EventArgs e)
   2:          {
   3:              this.ShowInTaskbar = true;
   4:              this.Visible = true;
   5:              notifyIcon1.Visible = false;
   6:          }

Natomiast pod przyciskiem Zakończ wpisujemy:


   1:          private void zakończToolStripMenuItem_Click(object sender, EventArgs e)
   2:          {
   3:              Application.Exit();
   4:          }

Nie trudno się domyślić co znaczą powyższe instrukcje. A oto otrzymany efekt:

Obiekt NotifyIcon pozwala dodatkowo na wyświetlanie dymków, komunikatów itp.

3 komentarze:

  1. dzięki ! :) bardzo mi pomogłeś - uczę się od niedawna C# :P

    OdpowiedzUsuń
  2. wielkie dzięki :D przydalo sie to i to nie raz :) lubie c# chodz nie wszystko jest zrozumiałe w nim :) dzieki za pomoc :)

    OdpowiedzUsuń
  3. Człowieku właśnie uratowałeś mi życie. 2 godziny w necie szukałem instrukcji jak to zrobić, wszędzie same kosmosy które się wysypywały. Tutaj jest super. Po małej modyfikacji z instrukcją IF, mozna podpiac to do checkboxa. Wtedy "ptaszek" włącza nam ikonke w trayu, a potem wyłącza ją bez ruszania okna głównego.

    OdpowiedzUsuń