web-dev-qa-db-fra.com

Moyen le plus simple pour qu'un programme se minimise dans la barre d'état système à l'aide de .NET 4

Je crée une nouvelle application WPF et je dois être en mesure de minimiser l'application et d'avoir Nice et confortable dans la barre d'état système, juste à côté de l'horloge (ou dans cette zone générale).

Cela doit fonctionner sur Windows XP, Vista et 7. Je n'ai pas à prendre en charge les anciennes versions de Windows.

Quelle est la manière la plus simple d'y parvenir si j'utilise .NET 4?

32
Only Bolivian Here

Exemple sur le forum MSDN

Voici un exemple rapide pour montrer comment réduire la zone de notification. Vous devez ajouter des références au System.Window.Forms et System.Drawing assemblages.

public partial class Window1 : System.Windows.Window
{

    public Window1()
    {
        InitializeComponent();

        System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
        ni.Icon = new System.Drawing.Icon("Main.ico");
        ni.Visible = true;
        ni.DoubleClick += 
            delegate(object sender, EventArgs args)
            {
                this.Show();
                this.WindowState = WindowState.Normal;
            };
    }

    protected override void OnStateChanged(EventArgs e)
    {
        if (WindowState == System.Windows.WindowState.Minimized)
            this.Hide();

        base.OnStateChanged(e);
    }
}
65
LaGrandMere

J'ai réussi à utiliser cette implémentation gratuite d'icônes de notification dans WPF.

http://www.hardcodet.net/projects/wpf-notifyicon

C'est assez simple à configurer et le code source est fourni. Il ne repose pas sur Windows Forms, il est donc "pur" WPF et très personnalisable.

Vous pouvez trouver un tutoriel sur la façon de l'utiliser sur CodeProject .
Et voici le Nuget Package

16
Alex McBride

Ajoutez notifyIcon à votre application depuis Toolbox.
Sélectionnez votre principal form >> allez dans l'icône Properties >> sélectionnez Events icône >> sous FromClosing event tapez MainForm_FormClosing >> appuyez sur Entrée.

enter image description here

En ouvert .cs fichier entrez l'action d'événement suivante:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
     this.Hide();
     notifyIcon.Visible = true;
     ShowInTaskbar = false;
     e.Cancel = true;
}

Maintenant, votre fenêtre FORM principale sera réduite dans la barre d'état système lorsque vous cliquez sur le bouton X. L'étape suivante consiste à remettre FORM dans son état normal.
Accédez au Properties de votre notifyIcon >> recherchez DoubleClick event >> tapez NotifyIcon_DoubleClick et appuyez sur Entrée pour obtenir la fonction d'événement créée pour vous.

enter image description here

Mettez ce code à votre événement:

private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    notifyIcon.Visible = false;
}

Maintenant, si vous voulez faire l'icône de notification dans un style sophistiqué , vous pouvez ajouter un menu contextuel et le lier à votre icône de notification, de sorte que vous obtenez quelque chose comme ça :

enter image description here

Voici où vous liez contextMenuStrip à NotifyIcon:

enter image description here

Bonne chance!

2
Serge Voloshenko