Je suis en train de créer une nouvelle application WPF et je dois être en mesure de la minimiser et d’avoir une belle fenêtre dans la barre d’état système, juste à côté de l’horloge (ou dans cette zone générale).
Cela doit fonctionner sous Windows XP, Vista et 7. Je n’ai pas besoin de supporter les anciennes versions de Windows.
Quel est le moyen le plus simple d’y parvenir si j’utilise .NET 4?
Exemple dans le forum MSDN
Voici un exemple rapide pour montrer comment réduire au minimum dans la zone de notification. Vous devez append des références aux assemblys System.Window.Forms et System.Drawing.
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 notify-icon dans WPF.
http://www.hardcodet.net/projects/wpf-notifyicon
C’est assez simple à installer et le code source est fourni. Il ne repose pas sur Windows Forms, il est donc «pur» en WPF et très personnalisable.
Vous pouvez trouver un tutoriel sur son utilisation sur CodeProject .
Ajoutez notifyIcon
à votre application depuis Toolbox.
Sélectionnez votre form
principal >> allez dans Properties
>> sélectionnez l’icône Events
>> sous le type d’ FromClosing event
MainForm_FormClosing
>> appuyez sur enter.
Dans le fichier .cs
ouvert, entrez l’action suivante de l’événement:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { this.Hide(); notifyIcon.Visible = true; ShowInTaskbar = false; e.Cancel = true; }
Maintenant, votre fenêtre principale de formulaire sera réduite à la barre d’état système lorsque vous cliquez sur le bouton X. La prochaine étape consiste à ramener le formulaire à son état normal.
Accédez aux Properties
de votre notifyIcon
>> trouver un 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 créer l’icône de notification dans un style sophistiqué, vous pouvez append un menu contextuel et le lier à votre icône de notification afin que vous obteniez quelque chose comme ça:
Voici où vous liez contextMenuSsortingp à NotifyIcon:
Bonne chance!