2013-04-22 5 views
6

meine App zum Chatten ist, und ich denke, wenn jemand es schnell zu verstecken braucht, aber nicht wollen, um es zu schließen, kam ich mit auf den Punkt:Minimize to tray

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 
} 

jedoch anstelle des Gehens in der Taskleiste, ich will es (kein Pop-up) in das Fach ein, nur das Apps-Symbol angezeigt werden soll, und wenn jemand darauf klickt braucht es diese

this.WindowState = FormWindowState.Normal; 

Ist das möglich einzustellen, wie?

auch durch System-Tray meine ich die eine in der unteren rechten Ecke, neben die Zeit

Ich kann immer noch nicht dies funktioniert, nichts in der Benachrichtigungsleiste erscheint, wenn ich tue, was ihr gesagt (BTW: das ist der vollständige Code zu minimieren)

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 


} 

private void Form_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
    { 
     this.Hide(); 
    } 


} 

private void notifyIcon_Click(object sender, EventArgs e) 
{ 
    this.Show(); 
    this.WindowState = FormWindowState.Normal; 
} 

Warum funktioniert das nicht?

+1

Es gibt nicht so etwas wie eine "Taskleiste". Es heißt "Benachrichtigungsbereich". Das sollte Ihnen helfen, die richtige Komponente für die Implementierung zu finden, die 'NotifyIcon'. –

Antwort

7

Behandeln Sie das Resize-Ereignis des Formulars. In diesem Handler überschreiben Sie die Grundfunktionalität des Resize-Ereignisses, um das Formular auf die Systemleiste und nicht auf die Taskleiste zu minimieren. Dies kann, indem Sie die in Ihrem Formular Handler Ereignis Resize folgenden erfolgen:

  1. prüfen, ob die Windowstate-Eigenschaft des Formulars auf FormWindowState.Minimized gesetzt. Wenn ja, verstecken Sie Ihr Formular, aktivieren Sie das NotifyIcon-Objekt und zeigen Sie den Sprechblasentipp an, der einige Informationen enthält.
  2. Sobald WindowState zu FormWindowState.Normal wird, deaktivieren Sie das NotifyIcon-Objekt, indem Sie die Visible-Eigenschaft auf false festlegen.
  3. Jetzt möchten Sie, dass das Fenster wieder angezeigt wird, wenn Sie auf das NotifyIcon-Objekt in der Taskleiste doppelklicken. Behandeln Sie dazu das NotifyIcon-Ereignis MouseDoubleClick. Hier zeigen Sie das Formular mit der Methode Show() an.

In Form Resize-Ereignis, tun Sie das Kontroll dort und verstecken die Form

private void Form_Resize(object sender, EventArgs e) 
    { 
     if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 
    } 

Dann, wenn auf das Symbol klicken sie einfach wiederherstellen.

private void notifyIcon_Click(object sender, EventArgs e) 
{ 
    this.Show(); 
    this.WindowState = FormWindowState.Normal; 
} 

Siehe:
How do I minimize a WinForms application to the notification area?
minimize app to system tray

+0

SO sollte eine Option haben, doppelte Antworten zu markieren! http://StackOverflow.com/a/6317078/762730 – Sandeep

+0

@Sandeep: Er möchte das Popup auch nicht genau die gleiche Frage zu verbergen, sonst bin ich immer glücklich, diese Arbeit zuerst zu tun, anstatt hier zu schreiben .. gut danke für Ihren Vorschlag. –

+0

ok Ich muss etwas vermissen, ich weiß nicht, was es ist, wenn Sie es für mich vollständig buchstabieren könnten, weil ich blöd bin, was ist der volle Code, den ich hineinlege, auch ich möchte die App auf die bekommen Benachrichtigungsleiste zuerst und ich möchte nicht, dass es ein Popup hat, oder um das Popup – Connor

5

Verwenden Sie folgenden Code:

if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 

Wenn Sie das Formular minimieren, einfach ausblenden. Sie müssen obigen Code in Form_Resize Ereignis implementieren.

Dann Taskleiste Symbol auf einen Klick nur seinen Zustand wiederherstellen wie folgt:

private void notifyIcon_Click(object sender, EventArgs e) 
    { 
     this.Show(); 
     this.WindowState = FormWindowState.Normal; 
    } 

Sie müssen notifyIcon_Click Ereignis für diesen Zweck verwenden.

Ich hoffe, es ist hilfreich.