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

    xiaoxiao2021-03-25  248

    按要求要做一个隐藏在后台通知栏的功能,而目前软件开发所用的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;         }   最后效果:

     

     

     

    关于其他:

     

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

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

    转载请注明原文地址: https://ju.6miu.com/read-203.html

    最新回复(0)