123 votes

minimiser l'application dans la barre d'état système

J'ai une application Windows forms réalisée avec C# et Visual Studio 2010.

Comment puis-je minimiser mon application dans la barre d'état système (et non dans la barre des tâches), puis la ramener lorsque je double-clique dans la barre d'état système ? Une idée ? Aussi, comment puis-je créer un menu dans l'icône de la barre d'état système et lorsque je clique dessus avec le bouton droit, il affiche un menu comme Connexion, Déconnexion, Connexion, quelque chose comme ça. De plus, existe-t-il une méthode pour faire apparaître un ballon dans la barre d'état système ?

Merci à tous et bonne journée.

PS : J'ai déjà ajouté une notifyIcon, mais je ne sais pas comment l'utiliser. Merci.

0 votes

Vous pouvez télécharger ici un excellent exemple de code simple-talk.com/dotnet/.net-framework/

0 votes

Vous devez vous assurer d'aller dans le Designer.cs du formulaire et "enregistrer" le gestionnaire d'événements, sinon rien ne fonctionnera (je n'ai pas réussi à le comprendre). Vous pouvez le faire en ajoutant quelque chose comme ceci : this.Resize += new System.EventHandler(this.ManagementForm_Resize) ;

160voto

CD.. Points 23701

Gérer l'événement Resize du formulaire. Dans ce gestionnaire, vous remplacez la la fonctionnalité de base de l'événement Resize pour que le formulaire soit réduit à la dans la barre d'état système et non dans la barre des tâches. Pour ce faire, il suffit de faire ce qui suit suivantes dans le gestionnaire de l'événement Resize de votre formulaire : Vérifiez si la propriété WindowState la propriété WindowState du formulaire est définie sur FormWindowState.Minimized. Si Si oui, cachez votre formulaire, activez l'objet NotifyIcon et affichez la bulle d'information. info-bulle qui affiche quelques informations. Une fois que le WindowState devient FormWindowState.Normal, désactivez l'objet NotifyIcon en définissant sa propriété Visible à false. Maintenant, vous voulez que la fenêtre réapparaisse lorsque vous double-cliquez sur l'objet NotifyIcon dans la barre des tâches. Pour cela, vous devez gérez l'événement MouseDoubleClick de l'objet NotifyIcon. Ici, vous affichez le formulaire formulaire à l'aide de la méthode Show().

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;
    }
}

5 votes

Vous pouvez modifier la propriété Form.FormBorderStyle msdn.microsoft.com/fr/us/library/

0 votes

Tnx ! ça a marché aussi une idée pour désactiver ces boutons minimiser, fermer, maximiser en haut à droite ? tnx

8 votes

76voto

Ben Gripka Points 4885

J'ai trouvé que ceci accomplissait la solution complète. La réponse ci-dessus ne permet pas de supprimer la fenêtre de la barre des tâches.

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;
}

Il est également utile de définir les propriétés suivantes du contrôle de l'icône de notification à l'aide du concepteur de formulaires.

this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't thing 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]";

9 votes

Vous manquez this.Show(); antes de this.WindowState = FormWindowState.Normal;

1 votes

Erreur de frappe dans "l'utilisateur ne fait rien" ;)

1 votes

@developerwjk, il ne manque pas parce qu'il n'appelle pas Hide() . Mais le problème avec cette approche est que la fenêtre apparaît toujours lorsque vous appuyez sur Alt-Tab. Je préfère appeler Hide() et de cette façon, vous n'avez pas besoin d'utiliser la fonction ShowInTaskbar propriété du tout.

22voto

ewwink Points 424

n'oubliez pas d'ajouter le fichier d'icône à votre notifyIcon, sinon il n'apparaîtra pas dans la barre d'état système.

0 votes

La partie la plus nécessaire du sujet. Pouvez-vous ajouter un peu plus d'informations sur la façon de forcer l'utilisation de l'icône par défaut ?

17voto

Je choisirais

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;
}

13voto

Tanmay Points 34

essayez ceci

 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;
    }

2 votes

Si vous vous contentez de masquer la barre des tâches au lieu d'appeler this.Hide() la fenêtre apparaît toujours lorsque vous faites Alt-Tab.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X