Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[Snippet] Vorlage für Tray-/NotifyIcon-Anwendung
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

Themenstarter:

[Snippet] Vorlage für Tray-/NotifyIcon-Anwendung

beantworten | zitieren | melden

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)
private Nachricht | Beiträge des Benutzers
tamilsuriyan
myCSharp.de - Member



Dabei seit:
Beiträge: 35

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

Themenstarter:

beantworten | zitieren | melden

Hallo tamilsuriyan,
Zitat
Wie bekomme ich die Konsole weg.
du musst den Zieltyp natürlich auf Windows-Forms einstellen (/target:winexe).
Zitat
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
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
zero_x
myCSharp.de - Member

Avatar #avatar-2567.gif


Dabei seit:
Beiträge: 1.044
Herkunft: Koblenz

beantworten | zitieren | melden

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 | myCSharp.de - gemeinsam mehr erreichen

Für längere Zeit inaktiv.
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Stipo am .
private Nachricht | Beiträge des Benutzers