2017-06-13 3 views
0

(WPF C#) Je veux minimiser l'application dans la barre système, mais sans icône dans la barre des tâches: enter image description here Je me suis donc:Problème avec réduisant au minimum l'application dans la barre système

this.ShowInTaskbar = false; 

icône Puis indésirables ont disparu, mais nouveau la barre apparaît sur le bureau!

enter image description here

Est-ce que quelqu'un s'il vous plaît avoir idée comment résoudre ce problème après la minimisation?

Voici ma part importante de code:

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

Veuillez mettre à jour le texte de votre message, ne mettez pas de texte dans les images. – Soviut

+0

Je vais le mettre à jour, désolé – user7968180

Répondre

1

Essayez d'appeler

this.Hide()

lorsque la forme est réduite au minimum, de préférence dans le gestionnaire d'événements Form.Resize:

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

À un certain moment, vous devez appeler

this.Show()

par exemple, dans le gestionnaire DoubleClick du NotifyIcon.

+0

Au WPF le nom de l'événement est StateChanged pas redimensionner. – user7968180

0

Votre fenêtre principale et son icône de notification ont aucune relation au sens de l'activation.

Vous ne voudriez généralement pas qu'une application en cours disparaisse et ne puisse plus l'activer. Windows permet donc à l'utilisateur de votre application de réactiver la fenêtre en cliquant sur l'icône de la barre des tâches (que vous souhaitez masquer) ou en cliquant sur sa bordure (que vous ne voulez pas non plus afficher). Pour contourner ce problème, il suffit de masquer votre fenêtre principale lorsqu'elle est réduite et de l'afficher lorsque vous cliquez sur l'icône de notification (double).

Ceci est expliqué avec moins de mots et plus de code dans 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 et ainsi de suite.

1

Réduire au minimum dans le bac est un peu un hack. Pour l'accomplir, vous devez:

  • Capture the minimiser l'événement et l'annuler pour éviter la réduction réelle
  • Masquer la fenêtre de votre application avec this.Hide()
  • Écouter pour un événement, cliquez sur l'icône de la barre des tâches et afficher la fenêtre d'application lorsqu'on clique sur
+0

J'ai mis à jour pourquoi this.Hide() ne fonctionne pas pour moi en question. – user7968180

+1

Si vous écoutez un événement 'Click' depuis' NotifyIcon' et faites 'this.Show()', il apparaîtra immédiatement. – Soviut

+1

Vous pouvez également configurer l'application maintenant pour apparaître dans la barre des tâches. – Soviut