WPF 通知栏图标和右键菜单

WPF没有自带的通知栏图标组件,需要引用Windows类库,具体代码如下:

        public MainWindow()
        {
            InitializeComponent();
            icon();
            wsl = WindowState.Minimized;
        }
#region 通知栏

            WindowState wsl;
            System.Windows.Forms.NotifyIcon notifyIcon = null;
        
            private void icon()
            {
                this.notifyIcon = new System.Windows.Forms.NotifyIcon();
                this.notifyIcon.BalloonTipText = "ECMS 服务正在运行..."; //设置程序启动时显示的文本
                this.notifyIcon.Text = "ECMS 服务";//最小化到托盘时,鼠标点击时显示的文本
                this.notifyIcon.Icon = new System.Drawing.Icon("./logo_48X48.ico");//程序图标
                this.notifyIcon.Visible = true;

                //右键菜单--打开菜单项
                System.Windows.Forms.MenuItem open = new System.Windows.Forms.MenuItem("Open");
                open.Click += new EventHandler(ShowWindow);
                //右键菜单--退出菜单项
                System.Windows.Forms.MenuItem exit = new System.Windows.Forms.MenuItem("Exit");
                exit.Click += new EventHandler(CloseWindow);
                //关联托盘控件
                System.Windows.Forms.MenuItem[] childen = new System.Windows.Forms.MenuItem[] { open, exit };
                notifyIcon.ContextMenu = new System.Windows.Forms.ContextMenu(childen);

                notifyIcon.MouseDoubleClick += OnNotifyIconDoubleClick;
                this.notifyIcon.ShowBalloonTip(1000);
            }

            private void OnNotifyIconDoubleClick(object sender, EventArgs e)
            {
                /*
                 * 这一段代码需要解释一下:
                 * 窗口正常时双击图标执行这段代码是这样一个过程:
                 * this.Show()-->WindowState由Normail变为Minimized-->Window_StateChanged事件执行(this.Hide())-->WindowState由Minimized变为Normal-->窗口隐藏
                 * 窗口隐藏时双击图标执行这段代码是这样一个过程:
                 * this.Show()-->WindowState由Normail变为Minimized-->WindowState由Minimized变为Normal-->窗口显示
                 */
                this.Show();
                this.WindowState = WindowState.Minimized;
                this.WindowState = WindowState.Normal;
            }

            private void Window_StateChanged(object sender, EventArgs e)
            {
                //窗口最小化时隐藏任务栏图标
                 if (WindowState == WindowState.Minimized)
                {
                    this.Hide();
                }
            }

            private void ShowWindow(object sender, EventArgs e)
            {
                this.Visibility = System.Windows.Visibility.Visible;
                this.ShowInTaskbar = true;
                this.Activate();
            }

            private void HideWindow(object sender, EventArgs e)
            {
                this.ShowInTaskbar = false;
                this.Visibility = System.Windows.Visibility.Hidden;
            }

            private void CloseWindow(object sender, EventArgs e)
            {
                System.Windows.Application.Current.Shutdown();
            }

        #endregion

《WPF 通知栏图标和右键菜单》

    原文作者:Flames2016
    原文地址: https://blog.csdn.net/zhumingyan/article/details/51136690
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞