【C#】关于右下角托盘图标以及气泡使用的注意事项
2016-06-12 14:10
513 查看
说实话,今天有点蛋疼了,折腾个右下角弹出气泡好半天,最后脑瓜们一亮,找到原因了吗,好气又好笑,还好过程不长,顺手记录一笔,以资纪念。
系统使用的是win10 专业版,vs使用的是2015版本,进行winform的标准应用开发。
首先是使用大家喜闻乐见的NotifyIcon组件,将托盘图标的功能实现出来:
1、visiable属性设置为true;
2、设置好这个组件的图标。
然后,监听这个组件的鼠标事件:
this.MainNotifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.NotifyIcon_MouseClick);由于需求上要求的是,右键没有反应,左键点击拉出来菜单进行退出,就像是360安全卫士那样的,所以还要给NotifyIcon组件设置一个ContextMenuStrip,实例化组件之后,将两个组件进行关联,并添加“关于”、“退出”两个选项(先用这两个,哈)。
然后就是在各种点击事件里面完成需求上的功能,接着就是完成气泡消息的实现,二话不说,直接一句话:
this.MainNotifyIcon.ShowBalloonTip(5000, "提示", "互动助手已经最小化至托盘运行!", ToolTipIcon.Info);这句话有错吗?木有!功能实现了吗?理论上实现啦!好使了吗?不好使!!!靠!!!!!!!!!!!!!!!!!!
开始找原因,到网上查了资料,大家都是一样的写法,断点调试,也木有问题,这到底是咋回事?
然后就开始纠结上windows系统机制上的检查,最后发现,我的win10在安装之后,将系统的通知信息全部取消了,是木有办法弹出来气泡滴!
猜想是这个,那就验证下呗!
任务栏--右键--通知区域--通知--显示应用通知--开
设置完之后,再一运行代码,妥了,出来了!!!!当时我这心中啊,一万头羊驼奔腾而过啊!!!!
系统自带的气泡不靠谱啊!!而且win10已经变成从右面弹出提示框的形式了,不再是气泡的形式了,所以,要想维持原先的样式,就只能自己写一个气泡了。
相对于右下角弹窗,右下角气泡是比较难实现滴,因为用户可能会选择将你的托盘图标折叠,酱紫就悲剧了,所以先暂时只能用系统的,先看看最终需求决定采用哪一个方式,是气泡还是托盘,然后再决定最终方案。
经验:windows系统机制上的问题需要多多注意,不然会浪费好多时间,泪奔ing~~~~~~~~~~~~~~~~~~
系统使用的是win10 专业版,vs使用的是2015版本,进行winform的标准应用开发。
首先是使用大家喜闻乐见的NotifyIcon组件,将托盘图标的功能实现出来:
1、visiable属性设置为true;
2、设置好这个组件的图标。
然后,监听这个组件的鼠标事件:
this.MainNotifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.NotifyIcon_MouseClick);由于需求上要求的是,右键没有反应,左键点击拉出来菜单进行退出,就像是360安全卫士那样的,所以还要给NotifyIcon组件设置一个ContextMenuStrip,实例化组件之后,将两个组件进行关联,并添加“关于”、“退出”两个选项(先用这两个,哈)。
然后就是在各种点击事件里面完成需求上的功能,接着就是完成气泡消息的实现,二话不说,直接一句话:
this.MainNotifyIcon.ShowBalloonTip(5000, "提示", "互动助手已经最小化至托盘运行!", ToolTipIcon.Info);这句话有错吗?木有!功能实现了吗?理论上实现啦!好使了吗?不好使!!!靠!!!!!!!!!!!!!!!!!!
开始找原因,到网上查了资料,大家都是一样的写法,断点调试,也木有问题,这到底是咋回事?
然后就开始纠结上windows系统机制上的检查,最后发现,我的win10在安装之后,将系统的通知信息全部取消了,是木有办法弹出来气泡滴!
猜想是这个,那就验证下呗!
任务栏--右键--通知区域--通知--显示应用通知--开
设置完之后,再一运行代码,妥了,出来了!!!!当时我这心中啊,一万头羊驼奔腾而过啊!!!!
系统自带的气泡不靠谱啊!!而且win10已经变成从右面弹出提示框的形式了,不再是气泡的形式了,所以,要想维持原先的样式,就只能自己写一个气泡了。
相对于右下角弹窗,右下角气泡是比较难实现滴,因为用户可能会选择将你的托盘图标折叠,酱紫就悲剧了,所以先暂时只能用系统的,先看看最终需求决定采用哪一个方式,是气泡还是托盘,然后再决定最终方案。
经验:windows系统机制上的问题需要多多注意,不然会浪费好多时间,泪奔ing~~~~~~~~~~~~~~~~~~
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法