WPF 程序启动显示为通知区域的图标方法
首先需要引用 System.Windows; System.Drawing;
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); InitialTray(); } private System.Windows.Forms.NotifyIcon notifyIcon = null; private void InitialTray() { //设置托盘的各个属性 notifyIcon = new System.Windows.Forms.NotifyIcon(); notifyIcon.BalloonTipText = "程序开始运行"; notifyIcon.Text = "托盘图标"; notifyIcon.Icon = new System.Drawing.Icon("NotifyIcon.ico"); notifyIcon.Visible = true; notifyIcon.ShowBalloonTip(2000); notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(notifyIcon_MouseClick); //设置菜单项 System.Windows.Forms.MenuItem menu1 = new System.Windows.Forms.MenuItem("菜单项1"); System.Windows.Forms.MenuItem menu2 = new System.Windows.Forms.MenuItem("菜单项2"); System.Windows.Forms.MenuItem menu = new System.Windows.Forms.MenuItem("菜单", new System.Windows.Forms.MenuItem[] { menu1 , menu2 }); //退出菜单项 System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("exit"); exit.Click += new EventHandler(exit_Click); //关联托盘控件 System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { menu , exit }; notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen); //窗体状态改变时候触发 this.StateChanged += new EventHandler(SysTray_StateChanged); } /// <summary> /// 窗体状态改变时候触发 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SysTray_StateChanged(object sender, EventArgs e) { if (this.WindowState == WindowState.Minimized) { //this.Visibility = Visibility.Hidden; } } /// <summary> /// 退出选项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void exit_Click(object sender, EventArgs e) { if (System.Windows.MessageBox.Show("确定要关闭吗?", "退出", MessageBoxButton.YesNo,MessageBoxImage.Question,MessageBoxResult.No) == MessageBoxResult.Yes) { notifyIcon.Dispose(); System.Windows.Application.Current.Shutdown(); } } /// <summary> /// 鼠标单击 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { if (this.Visibility == Visibility.Visible) { //this.Visibility = Visibility.Hidden; } else { this.Visibility = Visibility.Visible; this.WindowState = WindowState.Normal; //this.Activate(); } } } // 改变窗体关闭按钮事件 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { e.Cancel = true;//取消窗体关闭 this.Visibility = Visibility.Hidden;//窗体隐藏 } }