毕设(三)NotifyIcon

  NotifyIcon是一个比较特殊的组件,其特殊之处是既可以把它归类到控件中,也可以把它归类到组件中。这是因为将其拖放到设计窗体后,我们并不能马上看到它的界面(像组件),而是在运行时才能看到它(像控件)。

   通知区域中的图标是一些进程的快捷方式,这些进程在计算机后台运行,如防病毒程序或音量控制。这些进程不会具有自己的用户界面。NotifyIcon 类提供了编写此功能的方法。Icon 属性定义显示在通知区域中的图标。图标的弹出菜单由 ContextMenu 属性确定。Text 属性分配工具提示文本。要在通知区域中显示图标,必须将 Visible 属性设置为 true。     
                                                                                                                                                                                                ------来自百度百科
 
个人理解,就是人物栏通知区域里的图标。
 
前提:各类事件,快捷菜单的执行都是在NotifyIcon设置了Icon基础上的,如果没有设置,
甚至ShowBalloonTip也显示不出来。
 
1.拖控件到窗体上,其实也可以自己定义,主要最后加到窗体上就行。
2.Text属性 ,设置鼠标放在任务栏图标上时显示的文字,这里似乎不能设置样式,估计要重写这个控件才行。
类似qq的效果
 
3.ShowBalloonTip()方法,在任务栏中持续显示具有指定标题、文本和图标的气球通知。
就相当于在系统级给一个通知显示在屏幕右下角,拥有单击,双击,取消事件。
 
4.设置右键菜单项 ,可是是ContextMenuStrip或者ContextMenu,前者的功能比较强大,但后者的优先级高。
其中ContextMenuStrip的Items属性为ToolStripItemCollection,但是ToolStripItem为抽象类,不能创建它的实例,
通过发射工具发现会在内部创建ToolStripButton对象
            ContextMenuStrip cms = new ContextMenuStrip();//创建ContextMenuStrip的实例
            cms.Items.Add("个人中心", new Bitmap(@"E:毕设UAVGroundStationWindowsFormsApp1.jpg"));//比ContextMenu强大的地方,可以为每一项添加图片
            notifyIcon2.ContextMenuStrip = cms;

            MenuItem mt = new MenuItem("打开");//Context的子项
            mt.Click += Mt_Click;

            ContextMenu cm = new ContextMenu(new MenuItem[] { mt });//通过MenuItem数组创建ConatextMenu对象
            notifyIcon2.ContextMenu = cm;

 它的 子类有:

实测,这些类型都是可以加入到ContextMenuStrip中的,

对于ContextMenuStrip,可以直接从工具箱中拖入,只要NotifyIcon的ContextMenuStrip指向这个ContextMenuStrip实例就行。
 
类型qq:
5.各类事件(测试都是用弹出框测试的,可能存在缺陷和不准确性)
MouseUp:在区域内释放鼠标触发 包括左键、右键、滑轮
MouseClick:在区域内释放鼠标触发 包括左键、右键、滑轮,经过测试是和MouseUp一样。不知有什么特殊情况。
MouseDoubleClick:双击图标触发 包括左键、右键、滑轮
MouseDown:在区域内点击触发 测试显示左键需要点击→释放才触发,右键和滑轮直接触发
MouseMove:从区域内移动鼠标触发,测试显示,弹出框后,点击确定按钮关闭染出框会触发,可能是个bug。
6.建议
调试的时候
最好用后者,前者有时候触发不了,不准确。
 
 
 
原文地址:https://www.cnblogs.com/xiaoai123/p/6554569.html