web-dev-qa-db-fra.com

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

J'ai une application Windows Forms optimisée par C # et Visual Studio 2010.

Comment puis-je réduire mon application dans la barre d'état système (pas dans la barre des tâches), puis la ramener lorsque vous double-cliquez 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 quand je fais un clic droit dessus, il affiche un menu comme Login, Déconnecter, Connecter, quelque chose comme ça. En outre, y a-t-il des méthodes pour afficher comme un ballon surgissant de la barre d'état système?

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

106
WantIt

Gérez l'événement de redimensionnement du formulaire. Dans ce gestionnaire, vous remplacez la fonctionnalité de base de l'événement Resize pour que le formulaire soit réduit dans la barre d'état système et non dans la barre des tâches. Pour ce faire, procédez comme suit dans le gestionnaire d’événements Resize de votre formulaire: Vérifiez si la propriété WindowState du formulaire est définie sur FormWindowState.Minimized. Si tel est le cas, masquez votre formulaire, activez l'objet NotifyIcon et affichez l'info-bulle contenant des informations. Une fois que WindowState devient FormWindowState.Normal, désactivez l'objet NotifyIcon en définissant sa propriété Visible sur false. Désormais, vous souhaitez que la fenêtre réapparaisse lorsque vous double-cliquez sur l'objet NotifyIcon dans la barre des tâches. Pour cela, gérez l’événement MouseDoubleClick de NotifyIcon. Ici, vous affichez le formulaire en utilisant 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;
    }
}
145
CD..

J'ai trouvé cela pour accomplir la solution entière. La réponse ci-dessus ne parvient pas à 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;
}

De plus, il est bon de définir les propriétés suivantes du contrôle 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 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

J'irais avec

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

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

16
ewwink

essaye ça

 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

C’est la méthode que j’utilise dans mes applications. C’est assez simple et explicite, mais je me ferai un plaisir de donner plus de détails en réponse à vos commentaires.

    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

... et pour votre menu de notification de clic droit, ajoutez un menu contextuel au formulaire, modifiez-le et définissez des événements de clic de souris pour chaque élément de contexte en double-cliquant dessus, puis attachez-le à notifyicon1 en sélectionnant la propriété ContextMenuStrip dans notifyicon.

1
Ryu

Au clic sur l'image dans la barre d'état système, vous pouvez vérifier si le cadre est visible, puis vous devez définir Visible = true ou false.

1
Lorenzo Sogliani