2017-06-13 15 views
0

(WPF C#) I App System-Tray minimieren wollen, aber ohne Symbol in der Taskleiste: enter image description here So setzen i:Ärger mit App System-Tray minimieren

this.ShowInTaskbar = false; 

Dann unerwünschtes Symbol verschwunden, aber neue Bar erscheint auf dem Desktop!

enter image description here

Hat bitte jemand Ahnung, wie dieses Problem nach Minimierung zu lösen?

Hier ist mein wichtiger Teil des Codes:

private void stateChangedEvent(object sender, EventArgs e) 
     {    
      if (WindowState.Minimized == WindowState) 
      { 
       this.ShowInTaskbar = false; 
       var iconHandle = Properties.Resources.iconPaw.GetHicon(); 
       notifyIcon.Icon = System.Drawing.Icon.FromHandle(iconHandle); 
       notifyIcon.Click += new EventHandler(this.WindowsStateToNormal); 
       notifyIcon.Visible = true; 
       notifyIcon.BalloonTipText = "Radek app"; 
       notifyIcon.BalloonTipTitle = "Welcome Message"; 
       notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; 
       notifyIcon.ShowBalloonTip(3000); 
      } 
     } 

     private void WindowsStateToNormal(object Sender, EventArgs e) 
     { 
      this.WindowState = WindowState.Normal; 
      notifyIcon.Visible = false;    
     } 
+0

Bitte aktualisieren Sie den eigentlichen Text Ihrer Nachricht, nicht Text in Bildern. – Soviut

+0

Ich werde es updaten, sorry – user7968180

Antwort

1

Try

this.Hide()

, wenn das Formular minimiert wird, vorzugsweise im Form.Resize Ereignishandler zu nennen:

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

Irgendwann Sie

this.Show()

verlangen

zum Beispiel in der DoubleClick Handler der NotifyIcon.

+0

Bei WPF ist der Name des Ereignisses StateChanged nicht Resize. – user7968180

0

Ihr Hauptfenster und sein Symbol im Infobereich keine Beziehung im Sinne einer Aktivierung haben.

Normalerweise möchten Sie nicht, dass eine laufende Anwendung verschwindet und nicht wieder aktiviert werden kann. Windows gibt dem Benutzer Ihrer Anwendung daher die Möglichkeit, das Fenster zu reaktivieren, indem er entweder auf das Taskleistensymbol (das Sie ausblenden möchten) klickt oder auf seinen Rahmen klickt (den Sie auch nicht anzeigen möchten).

Um dies zu umgehen, verstecken Sie einfach Ihr Hauptfenster, wenn es minimiert ist, und blenden Sie es ein, wenn das Benachrichtigungssymbol doppelt angeklickt wird.

Dies wird mit weniger Worten und mehr Code in minimize app to system tray, How do I minimize a WinForms application to the notification area?, Minimize to tray, Minimizing a system windows form in tray in C# without seeing it hanging where taskbar erklärt und so weiter.

1

Minimierung auf das Fach ist ein bisschen wie ein Hack. Um das zu erreichen es müssen Sie:

  • Capture-Ereignis der minimieren und abbrechen tatsächlichen Minimierung
  • Verstecken Sie Ihre Anwendungsfenster mit this.Hide()
  • Hören für eine Click-Ereignis auf das Symbol und blenden das Anwendungsfenster zu verhindern wenn geklickt
+0

Ich habe aktualisiert, warum das.Hide() funktioniert mir nicht in Frage. – user7968180

+1

Wenn Sie ein 'Click'-Ereignis von der' NotifyIcon' hören und 'this.Show()' machen, wird es sofort angezeigt. – Soviut

+1

Sie können die App jetzt auch so konfigurieren, dass sie in der Taskleiste angezeigt wird. – Soviut