Co muszę zrobić, aby aplikacja Windows Forms działała w zasobniku systemowym?
Nie jest to aplikacja, która może zminimalizować do zasobnika, ale taka, która istnieje tylko w zasobniku, z ikoną, podpowiedzią i menu „prawym przyciskiem myszy”.
c#
.net
winforms
system-tray
xyz
źródło
źródło
icon.Visible = false
, a następnieDispose()
ikonę przy zamykaniu aplikacji. W przeciwnym razie po wyjściu z programu nadal będzie widoczna ikona. Po kilkukrotnym przetestowaniu nie będziesz już wiedział, która ikona jest prawdziwa.Odpowiedzi:
Artykuł dotyczący projektu kodu Tworzenie aplikacji Tasktray zawiera bardzo proste wyjaśnienie i przykład tworzenia aplikacji, która istnieje tylko w zasobniku systemowym.
Zasadniczo zmień
Application.Run(new Form1());
wiersz,Program.cs
aby zamiast tego uruchomić klasę, która dziedziczyApplicationContext
, i niech konstruktor tej klasy zainicjujeNotifyIcon
źródło
Jak mówi mat1t - musisz dodać NotifyIcon do swojej aplikacji, a następnie użyć czegoś takiego jak poniższy kod, aby ustawić podpowiedź i menu kontekstowe:
Ten kod pokazuje ikonę tylko w zasobniku systemowym:
Jeśli masz formularz (z dowolnego powodu), potrzebne będą:
Kliknięcie prawym przyciskiem myszy, aby wyświetlić menu kontekstowe, jest obsługiwane automatycznie, ale jeśli chcesz wykonać pewne czynności przy kliknięciu lewym przyciskiem, musisz dodać moduł obsługi kliknięć:
źródło
Napisałem aplikację paska zadań z .NET 1.1 i nie potrzebowałem formularza.
Przede wszystkim ustaw obiekt startowy projektu jako Sub
Main
, zdefiniowany w module.Następnie utwórz programowo komponenty:
NotifyIcon
iContextMenu
.Pamiętaj o dołączeniu
MenuItem
„Quit” lub podobnego.Powiązać
ContextMenu
zNotifyIcon
.Invoke
Application.Run()
.W obsługi zdarzeń dla Quit
MenuItem
należy zadzwonić zestawuNotifyIcon.Visible = False
, a następnieApplication.Exit()
. Dodaj to, czego potrzebujesz,ContextMenu
i odpowiednio postępuj :)źródło
Form1
z kodu.Form1
.NotifyIcon
klasy, aby utworzyć ikonę zasobnika systemowego (przypisz do niej ikonę).NotifyIcon
kliknięcie myszą i rozróżnij kliknięcie prawym i lewym przyciskiem myszy, ustawiając menu kontekstowe i pokazując, dla którego dowolnego przycisku (prawy / lewy) został naciśnięty.Application.Run()
aby aplikacja działała,Application.Exit()
by wyjść. Lub abool bRunning = true; while(bRunning){Application.DoEvents(); Thread.Sleep(10);}
. Następnie ustaw,bRunning = false;
aby zamknąć aplikację.źródło
Aplikacja „System tray” jest zwykłą aplikacją do wygrywania formularzy, jedyną różnicą jest to, że tworzy ikonę w obszarze Windows system tray. Aby utworzyć ikonę sys.tray, użyj składnika NotifyIcon, możesz go znaleźć w Przyborniku (Wspólne elementy sterujące) i zmodyfikować jego właściwości: Ikona, podpowiedź. Umożliwia także obsługę wiadomości z kliknięciami myszy i podwójnym kliknięciem.
I jeszcze jedno, aby uzyskać wygląd i standardową aplikację zasobnika. dodaj linie followinf w głównym wydarzeniu pokazowym:
źródło
O ile mi wiadomo, nadal musisz pisać aplikację za pomocą formularza, ale nie masz żadnych kontrolek w formularzu i nigdy nie ustawiam go jako widocznego. Użyj NotifyIcon (próbkę MSDN można znaleźć tutaj ), aby napisać aplikację.
źródło
Oto jak to zrobiłem z Visual Studio 2010 , .NET 4
źródło
Jest to bardzo przyjazny framework dla aplikacji Notification Area Application ... wystarczy dodać NotificationIcon do podstawowego formularza i zmienić automatycznie wygenerowany kod na kod poniżej:
źródło
Po prostu dodaj
do obiektu formularza. Zobaczysz tylko ikonę na pasku zadań.
źródło