Beschreibung:
Das folgende Snippet ist eine Vorlage für eine Anwendung, die beim Start ein NotifyIcon mit Kontextmenü erzeugt, aber kein Form öffnet. Das Öffnen von Forms ist aber über das Kontextmenü nachträglich möglich.
NotifyIcons sind die kleinen Symbole unten rechts in der Taskleiste (Tray).
Damit eignet sich diese Vorlage für Anwendungen, bei denen das NotifyIcon und nicht die Forms im Vordergrund stehen.
using System;
using System.Windows.Forms;
using System.Drawing;
//*****************************************************************************
static class MyNotifyIconApplication
{
private static NotifyIcon notico;
//==========================================================================
public static void Main (string [] astrArg)
{
ContextMenu cm;
MenuItem miCurr;
int iIndex = 0;
// Kontextmenü erzeugen
cm = new ContextMenu ();
// Kontextmenüeinträge erzeugen
miCurr = new MenuItem ();
miCurr.Index = iIndex++;
miCurr.Text = "&Aktion 1"; // Eigenen Text einsetzen
miCurr.Click += new System.EventHandler (Action1Click);
cm.MenuItems.Add (miCurr);
// Kontextmenüeinträge erzeugen
miCurr = new MenuItem ();
miCurr.Index = iIndex++;
miCurr.Text = "&Beenden";
miCurr.Click += new System.EventHandler (ExitClick);
cm.MenuItems.Add (miCurr);
// NotifyIcon selbst erzeugen
notico = new NotifyIcon ();
notico.Icon = new Icon("smile.ico"); // Eigenes Icon einsetzen
notico.Text = "Doppelklick mich!"; // Eigenen Text einsetzen
notico.Visible = true;
notico.ContextMenu = cm;
notico.DoubleClick += new EventHandler (NotifyIconDoubleClick);
// Ohne Appplication.Run geht es nicht
Application.Run ();
}
//==========================================================================
private static void ExitClick (Object sender, EventArgs e)
{
notico.Dispose ();
Application.Exit ();
}
//==========================================================================
private static void Action1Click (Object sender, EventArgs e)
{
// nur als Beispiel:
// new MyForm ().Show ();
}
//==========================================================================
private static void NotifyIconDoubleClick (Object sender, EventArgs e)
{
// Was immer du willst
}
}
Schlagwörter: NotifyIcon, Tray, Systemtray, Statusbereich, Taskbar, Taskleiste, Programmleiste, Icon, Symbol, ContextMenu, Kontextmenü, Anwendung, Programm, Anwendungsrahmen, Programmrahmen, 1000 Worte
Quelle: myCSharp.de
Siehe auch: [Artikel] Windows Tray Applikationen (NotifyIcon)
Hallo,
ich hab es gestestet. Wie bekomme ich die Konsole weg. Ich will das nur Systemtray aktiv ist und das es beim Drücken eine Fenster aufgeht. Die Konsole am Anfang stört mich. Wie kann ich es verhindern?
Ist es möglich das man mit dem Maus auf dem Icon drauf kann und dabei das Fenster sich öffnet. Und wenn man von dem Icon weg ist dann soll das Fenster auch verschwinden.
Thx
Hallo tamilsuriyan,
Wie bekomme ich die Konsole weg.
du musst den Zieltyp natürlich auf Windows-Forms einstellen (/target:winexe).
Ist es möglich das man mit dem Maus auf dem Icon drauf kann und dabei das Fenster sich öffnet. Und wenn man von dem Icon weg ist dann soll das Fenster auch verschwinden.
Einblenden kannst du das Fenster, immer wenn NotifyIcon.MouseMove kommt. Das Problem ist eher, dass du nicht mitbekommst, wann die Maus das NotifyIcon verlässt. Du könntest das Fenster aber zeitgesteuert ausblenden.
herbivore
Hallo herbivore,
wie kann ich eigentlich in deinem Notify oben einen Separator einbauen?
Suche mich da schon die ganze Zeit dumm und dappig, aber bin wohl zu blöd das zu finden.
Grüße Stephan
Hallo Stipo,
du kannst einen Separator mit dem Binde- oder Minusstrich erzeugen. Dazu musst du einen Eintrag mit einfach einem "-" hinzufügen. Hier ein Beispiel:
// Einen Separator erzeugen
miCurr = new MenuItem();
miCurr.Index = iIndex++;
miCurr.Text = "-";
miCurr.Click += new System.EventHandler(ExitClick);
cm.MenuItems.Add(miCurr);
zero_x
P.S.: Sollte deine Frage eigentlich nicht besser hier: GUI: Windows-Forms stellen?
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo zero_x,
danke für das Beispiel. Das hat mir geholfen. Wäre wohl nie drauf gekommen, das es so einfach ist 😉 Hatte schon die ganze MSDN auf den Kopf gestellt.
Grüße Stephan