Was muss ich tun, damit eine Windows Forms- Anwendung in der Taskleiste ausgeführt wird?
Keine Anwendung, die auf das Fach minimiert werden kann, sondern eine, die nur im Fach vorhanden ist und nur ein Symbol, einen Tooltip und ein Kontextmenü enthält.
c#
.net
winforms
system-tray
xyz
quelle
quelle
icon.Visible = false
,Dispose()
das Symbol beim Beenden Ihrer Anwendung festzulegen. Andernfalls wird das Symbol nach dem Beenden Ihres Programms weiterhin angezeigt. Nachdem Sie es einige Male getestet haben, wissen Sie nicht mehr, welches Symbol echt ist.Antworten:
Der Code-Projektartikel Erstellen einer Tasktray-Anwendung enthält eine sehr einfache Erklärung und ein Beispiel für das Erstellen einer Anwendung, die nur in der Taskleiste vorhanden ist.
Ändern Sie im Grunde die
Application.Run(new Form1());
Zeile in,Program.cs
um stattdessen eine Klasse zu starten, von der geerbt wirdApplicationContext
, und lassen Sie den Konstruktor für diese Klasse a initialisierenNotifyIcon
quelle
Wie mat1t sagt, müssen Sie Ihrer Anwendung ein NotifyIcon hinzufügen und dann den folgenden Code verwenden, um den Tooltip und das Kontextmenü festzulegen:
Dieser Code zeigt nur das Symbol in der Taskleiste:
Folgendes wird benötigt, wenn Sie ein Formular haben (aus welchem Grund auch immer):
Der Rechtsklick zum Aufrufen des Kontextmenüs wird automatisch ausgeführt. Wenn Sie jedoch mit einem Linksklick eine Aktion ausführen möchten, müssen Sie einen Klick-Handler hinzufügen:
quelle
Ich habe eine Traybar-App mit .NET 1.1 geschrieben und brauchte kein Formular.
Legen Sie zunächst das Startobjekt des Projekts als Sub fest
Main
, das in einem Modul definiert ist.Erstellen Sie dann programmgesteuert die Komponenten: die
NotifyIcon
undContextMenu
.Stellen Sie sicher, dass Sie ein
MenuItem
"Beenden" oder ähnliches einfügen.Binden Sie die
ContextMenu
an dieNotifyIcon
.Rufen Sie auf
Application.Run()
.Im Ereignishandler für das Beenden
MenuItem
sicher seinen Satz zu nennenNotifyIcon.Visible = False
, dannApplication.Exit()
. Füge hinzu, was du brauchstContextMenu
und handhabe es richtig :)quelle
Form1
Aus dem Code .Form1
.NotifyIcon
Klasse, um das Taskleistensymbol zu erstellen (weisen Sie ihm ein Symbol zu).NotifyIcon
den Mausklick und unterscheiden Sie zwischen Rechts- und Linksklick, stellen Sie Ihr Kontextmenü ein und zeigen Sie an, für welche Taste (rechts / links) gedrückt wurde.Application.Run()
um die App am Laufen zu haltenApplication.Exit()
. Oder abool bRunning = true; while(bRunning){Application.DoEvents(); Thread.Sleep(10);}
. Stellen Sie dann einbRunning = false;
, um die App zu beenden.quelle
Die Anwendung "Taskleiste" ist nur eine reguläre Win Forms-Anwendung. Der einzige Unterschied besteht darin, dass im Windows-Taskleistenbereich ein Symbol erstellt wird. Um ein sys.tray-Symbol zu erstellen, verwenden Sie die NotifyIcon-Komponente. Sie finden sie in der Toolbox (Allgemeine Steuerelemente) und ändern ihre Eigenschaften: Symbol, QuickInfo. Außerdem können Sie Mausklick- und Doppelklicknachrichten verarbeiten.
Und noch etwas, um ein Erscheinungsbild und eine Standard-Tray-App zu erzielen. Fügen Sie Ihrem Hauptformular-Show-Event folgende Info-Zeilen hinzu:
quelle
Soweit mir bekannt ist, müssen Sie die Anwendung immer noch mit einem Formular schreiben, aber keine Steuerelemente für das Formular haben und es niemals sichtbar machen. Verwenden Sie das NotifyIcon (ein MSDN-Beispiel davon finden Sie hier ), um Ihre Anwendung zu schreiben.
quelle
So habe ich es mit Visual Studio 2010 , .NET 4 gemacht
quelle
Es ist ein sehr benutzerfreundliches Framework für die Notification Area-Anwendung. Es reicht aus, NotificationIcon zum Basisformular hinzuzufügen und automatisch generierten Code in den folgenden Code zu ändern:
quelle
Einfach hinzufügen
zu Ihrem Formularobjekt. In der Taskleiste wird nur ein Symbol angezeigt.
quelle