c# wpf .net-4.0 system-tray minimize

c# - La forma más fácil de hacer que un programa se minimice en la bandeja del sistema usando.NET 4



wpf .net-4.0 (3)

Agregue notifyIcon a su aplicación desde Toolbox.
Seleccione su form principal >> vaya a las Properties >> seleccione el ícono Events >> en FromClosing event Tipo de FromClosing event MainForm_FormClosing >> MainForm_FormClosing enter.

En el archivo .cs abierto ingrese la siguiente acción del evento:

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

Ahora su ventana principal de FORM se minimizará en la bandeja del sistema cuando haga clic en el botón X. El siguiente paso es hacer que FORM vuelva al estado normal.
Vaya a las Properties de su notifyIcon >> busque el DoubleClick event >> escriba NotifyIcon_DoubleClick y NotifyIcon_DoubleClick enter para obtener la función de evento creada para usted.

Pon este código a tu evento:

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

Ahora, si desea hacer el icono de notificación con un estilo elegante , puede agregar un menú contextual y vincularlo a su icono de notificación, para que obtenga algo así:

Aquí es donde se vincula contextMenuStrip a NotifyIcon:

¡Buena suerte!

Estoy creando una nueva aplicación WPF y necesito poder minimizar la aplicación y tener un aspecto agradable y cómodo en la bandeja del sistema, justo al lado del reloj (o en esa área general).

Esto tiene que funcionar en Windows XP, Vista y 7. No tengo que admitir versiones anteriores de Windows.

¿Cuál es la forma más sencilla de lograr esto si estoy usando .NET 4?


He tenido éxito al usar esta implementación gratuita de notificación de íconos en WPF.

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

Es bastante simple de configurar y se proporciona el código fuente. No se basa en Windows Forms, por lo que es WPF "puro" y muy personalizable.

Puede encontrar un tutorial sobre cómo usarlo en CodeProject .


Ejemplo en el foro de MSDN

Aquí hay un ejemplo rápido para mostrar cómo minimizar el área de notificación. Debe agregar referencias a los ensamblados System.Window.Forms y 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); } }