webentwicklung-frage-antwort-db.com.de

App in die Taskleiste minimieren

Ich habe eine Windows Forms-App mit C # und Visual Studio 2010.

Wie kann ich meine App in die Taskleiste (nicht in die Taskleiste) minimieren und sie dann nach einem Doppelklick in die Taskleiste zurückbringen? irgendeine Idee? Wie kann ich ein Menü im Symbol in der Taskleiste erstellen und wenn ich mit der rechten Maustaste darauf klicke, wird ein Menü wie Anmelden, Trennen, Verbinden angezeigt. Gibt es auch Methoden, um anzuzeigen, wie ein Ballon aus der Taskleiste auftaucht?

PS: Ich habe bereits ein notifyIcon hinzugefügt, weiß aber nicht, wie ich es verwenden soll.

106
WantIt

Verarbeiten Sie das Größenänderungsereignis des Formulars. In diesem Handler überschreiben Sie die grundlegenden Funktionen des Resize-Ereignisses, damit das Formular in der Taskleiste und nicht in der Taskleiste minimiert wird. Gehen Sie dazu im Resize-Ereignishandler Ihres Formulars folgendermaßen vor: Überprüfen Sie, ob die WindowState-Eigenschaft des Formulars auf FormWindowState.Minimized festgelegt ist. Wenn ja, blenden Sie Ihr Formular aus, aktivieren Sie das NotifyIcon-Objekt und zeigen Sie die Sprechblase an, die einige Informationen enthält. Deaktivieren Sie das NotifyIcon-Objekt, indem Sie seine Visible-Eigenschaft auf False festlegen, sobald das WindowState zu FormWindowState.Normal wird. Jetzt soll das Fenster wieder angezeigt werden, wenn Sie auf das NotifyIcon-Objekt in der Taskleiste doppelklicken. Behandeln Sie hierzu das MouseDoubleClick-Ereignis von NotifyIcon. Hier zeigen Sie das Formular mit der Show () -Methode an.

private void frmMain_Resize(object sender, EventArgs e)
{
    if (FormWindowState.Minimized == this.WindowState)
    {
       mynotifyicon.Visible = true;
       mynotifyicon.ShowBalloonTip(500);
       this.Hide();
    }

    else if (FormWindowState.Normal == this.WindowState)
    {
       mynotifyicon.Visible = false;
    }
}
145
CD..

Ich fand das, um die gesamte Lösung zu erreichen. Die obige Antwort kann das Fenster nicht aus der Taskleiste entfernen.

private void ImportStatusForm_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Minimized)
    {
        notifyIcon.Visible = true;
        notifyIcon.ShowBalloonTip(3000);
        this.ShowInTaskbar = false;
    }
}

private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    notifyIcon.Visible = false;
}

Es empfiehlt sich auch, die folgenden Eigenschaften des Benachrichtigungssymbol-Steuerelements im Formulardesigner festzulegen.

this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";
69
Ben Gripka

Ich würde mitgehen

private void Form1_Resize(object sender, EventArgs e)
{
     if (FormWindowState.Minimized == this.WindowState)
     {
          notifyIcon1.Visible = true;
          notifyIcon1.ShowBalloonTip(500);
          this.Hide();    
     }
     else if (FormWindowState.Normal == this.WindowState)
     {
          notifyIcon1.Visible = false;
     }
}

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
     this.Show();
     this.WindowState = FormWindowState.Normal;
}
17

vergessen Sie nicht, Ihrem notifyIcon eine Symboldatei hinzuzufügen, da diese sonst nicht in der Taskleiste angezeigt wird.

16
ewwink

versuche dies

 private void Form1_Load(object sender, EventArgs e)
    {
        notifyIcon1.BalloonTipText = "Application Minimized.";
        notifyIcon1.BalloonTipTitle = "test";
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        if (WindowState == FormWindowState.Minimized)
        {
            ShowInTaskbar = false;
            notifyIcon1.Visible = true;
            notifyIcon1.ShowBalloonTip(1000);
        }
    }

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        ShowInTaskbar = true;
        notifyIcon1.Visible = false;
        WindowState = FormWindowState.Normal;
    }
12
Tanmay Nehete

Dies ist die Methode, die ich in meinen Anwendungen verwende. Sie ist ziemlich einfach und selbsterklärend, aber ich gebe gerne weitere Details als Antwort auf Ihre Kommentare.

    public Form1()
    {
        InitializeComponent();

        // When window state changed, trigger state update.
        this.Resize += SetMinimizeState;

        // When tray icon clicked, trigger window state change.       
        systemTrayIcon.Click += ToggleMinimizeState;
    }      

    // Toggle state between Normal and Minimized.
    private void ToggleMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;
        this.WindowState = (isMinimized) ? FormWindowState.Normal : FormWindowState.Minimized;
    }

    // Show/Hide window and tray icon to match window state.
    private void SetMinimizeState(object sender, EventArgs e)
    {    
        bool isMinimized = this.WindowState == FormWindowState.Minimized;

        this.ShowInTaskbar = !isMinimized;           
        systemTrayIcon.Visible = isMinimized;
        if (isMinimized) systemTrayIcon.ShowBalloonTip(500, "Application", "Application minimized to tray.", ToolTipIcon.Info);
    }
3
Wasp

... und für Ihr Rechtsklick-Benachrichtigungsmenü fügen Sie dem Formular ein Kontextmenü hinzu und bearbeiten Sie es und setzen Sie Mausklick-Ereignisse für jedes Kontextmenü, indem Sie darauf doppelklicken und es dann an das Benachrichtigungssymbol1 anhängen, indem Sie die ContextMenuStrip-Eigenschaft in Benachrichtigungssymbol auswählen.

1
Ryu

Wenn Sie auf das Bild in der Taskleiste klicken, können Sie überprüfen, ob der Rahmen sichtbar ist, und dann müssen Sie Visible = true oder false festlegen

1