WPF中隐藏程序窗口让图标显示在通…

按要求要做一个隐藏在后台通知栏的功能,而目前软件开发所用的wpf不含有NotifyIcon这一控件,研究了一下如何调用winform,效果也算是达到了


头文件
using WinForms = System.Windows.Forms;

预定义几个按钮和通知栏图标
         private WinForms.NotifyIcon _notifyIcon;
        private WinForms.ContextMenu _contextMenu;
        private WinForms.MenuItem _openWindow;
        private WinForms.MenuItem _closeApp;
        private System.ComponentModel.IContainer _iContainer;


初始化函数
 public void NotifyInit()//通知栏显示图标的初始化
        {
            _contextMenu = new WinForms.ContextMenu();
            _openWindow = new WinForms.MenuItem() { Text = "Show" };
            _closeApp = new WinForms.MenuItem() { Text = "Exit" };
           
            _iContainer = new System.ComponentModel.Container();

            WinForms.MenuItem[] menuItems = new WinForms.MenuItem[] { _openWindow, _closeApp };

            _contextMenu.MenuItems.AddRange(menuItems);
            _openWindow.Click += new System.EventHandler(openWindow_Click);
            _closeApp.Click += new System.EventHandler(exitApp_Click);

            _notifyIcon = new WinForms.NotifyIcon(_iContainer);
            _notifyIcon.Icon = new System.Drawing.Icon(@"Z:\CUserPicture\logo\bitbug_favicon.ico");
            _notifyIcon.Text = "Todolist";
            _notifyIcon.Visible = true;
            _notifyIcon.ContextMenu = _contextMenu;
        }

通知栏图标相关:

上面的  _notifyIcon.Icon = new System.Drawing.Icon(@"Z:\logo\bitbug_favicon.ico");   这一句中是我自己的图标的绝对路径,图标必须要有才会显示

  _notifyIcon.Text 这个是设置显示在通知栏中的时候,程序的名称



右键按钮相关

    _openWindow.Click += new System.EventHandler(openWindow_Click);
            _closeApp.Click += new System.EventHandler(exitApp_Click);

openWindow_Click, exitApp_Click 这两个事件是已经定义的函数


比如我一开始是隐藏dialog的,那么这里的openWindw就是

  private void   openWindow_Click(object sender,EventArgs e)
        {
            this.Show();
        }
这样在点击Show时候就会显示程序窗口
 

退出程序这里比较直截了当
private void exitApp_Click(object sender,EventArgs e)
              {
                      Environment.Exit(0);
              }


防止点击X导致程序关闭,需要重载关闭按钮

protected override void OnClosing(CancelEventArgs e)
        {
            Hide();
            e.Cancel = true;
        }
 

最后效果:

WPF中隐藏程序窗口让图标显示在通知栏


 

 

 

关于其他:

 

这位开发的库也可以一用,但我在折腾了一会觉得一些地方似乎是对不上的,虽然近期还在做库更新但是教程没有更新,要更好地使用还需要折腾一下

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值