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?
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);
}
}
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
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.
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.
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 :
Voici où vous liez contextMenuStrip à NotifyIcon:
Bonne chance!