• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#托盘图标闪烁

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在用户正在登录QQ或者使用Firemail邮件系统自动收取邮件的时候,托盘图标会闪动提示用户正在运行的任务。闪动图标可以使用定时切换托盘图标的方式实现,托盘图标可以从ImageList控件中获取。在ImageList控件里面添加三个icon,第一个icon表示窗体启动以后的托盘图标。第二个和第三个图标分别表示当特定的任务发生的时候,定时切换的图标。

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Text;
  7 using System.Windows.Forms;
  8 using System.Threading;
  9 
 10 namespace JajaWeixin.MyClient
 11 {
 12     public partial class Flashing : Form
 13     {
 14         //切换图片的标识
 15         private bool iconFlag = false;//加载图标切换状态是停止状态
 16 
 17         //系统是否运行
 18         private bool isRun = false;//加载状态运行是停止
 19 
 20         //设置icon显示的图片
 21         public Flashing()
 22         {
 23             InitializeComponent();
 24             this.setIconImg(0);//加载窗体时托盘显示的图标是下标为0的那张图片
 25         }
 26         
 27         //客户端查询订单每隔5秒
 28         private void timer_dingdanchaxun_Tick(object sender, EventArgs e)
 29         {
 30 
 31             string jiudianId = "201406261626";
 32             string objGuid = Convert.ToString(System.Guid.NewGuid());
 33             string result = jiudianId + objGuid;
 34             string desString = DESEncrypt.Encrypt(result);
 35             mylocalhost.MyWebService serviceone = new mylocalhost.MyWebService();
 36             string str = serviceone.Messagetoremind(desString);
 37             //MessageBox.Show(serviceone.Messagetoremind(desString));
 38             //return;
 39             if (str != "")
 40             {
 41                 this.isRun = true;//开始闪烁
 42             }
 43             else
 44             {
 45                 this.isRun = false;
 46             }
 47         }
 48 
 49         //设置托盘的图标可以从Image对象转换为Icon对象
 50         private void setIconImg(int index)
 51         {
 52             Image img=this.imgIcon.Images[index];
 53             Bitmap b = new Bitmap(img);
 54             Icon icon = Icon.FromHandle(b.GetHicon());
 55             this.niMain.Icon = icon;
 56         }
 57 
 58         //显示主窗体
 59         private void tsmiMain_Click(object sender, EventArgs e)
 60         {
 61             //显示主窗体
 62             this.Visible = true;
 63             this.WindowState = System.Windows.Forms.FormWindowState.Normal;
 64             //隐藏托盘图标
 65             this.niMain.Visible = false;//显示主窗体的时候,托盘图标隐藏
 66             this.Show();//主窗体显示
 67         }
 68 
 69         //退出
 70         private void tsmiExit_Click(object sender, EventArgs e)
 71         {
 72             //设置托盘的提示信息
 73             this.niMain.BalloonTipText = "成功退出!";
 74             this.niMain.BalloonTipTitle = "退出";
 75             this.niMain.ShowBalloonTip(1000 * 3);//在任务栏中持续显示气球提示的指定时间
 76             //延迟退出
 77             Thread.Sleep(1000 * 2);
 78             //释放托盘图标资源
 79             this.niMain.Dispose();
 80             //终止线程
 81             Application.ExitThread();
 82         }
 83 
 84         //最小化时隐藏窗体,显示托盘图标
 85         private void Flashing_SizeChanged(object sender, EventArgs e)
 86         {
 87             if (this.WindowState == FormWindowState.Minimized)
 88             {
 89                 this.Hide();
 90                 this.niMain.Visible = true;
 91             }
 92         }
 93 
 94         //窗体的最小化按钮和关闭按钮实现隐藏窗体的功能,窗体关闭时,会执行FormClosing 事件,
 95         //释放与此窗体关联的所有资源。因此需要取消关闭事件,实现窗体的隐藏和托盘的显示功能。
 96         private void Flashing_FormClosing(object sender, FormClosingEventArgs e)
 97         {
 98             e.Cancel = true;
 99             this.Hide();
100             //this.ShowInTaskbar = false;//取消窗体在任务栏的显示
101             this.niMain.Visible = true;
102         }
103 
104         //加载窗体是隐藏窗体
105         private void Flashing_Load(object sender, EventArgs e)
106         {
107             this.Hide();
108         }
109 
110         //定时器切换图标显示
111         private void tmrIcon_Tick(object sender, EventArgs e)
112         {
113             if (!this.isRun)
114             {
115                 return;
116             }
117             if (iconFlag)
118             {
119                 this.setIconImg(1);
120                 iconFlag = !iconFlag;
121             }
122             else
123             {
124                 this.setIconImg(2);
125                 iconFlag = !iconFlag;
126             }
127         }
128 
129         //点击运行菜单
130         private void tsmiRun_Click(object sender, EventArgs e)
131         {
132             this.tsmiRun.Enabled = false;//运行按钮不可用
133             this.tsmiStop.Enabled = true;//停止按钮可用
134             //设置运行状态
135             //this.isRun = true;//开始闪烁
136             this.timer_dingdanchaxun.Enabled = true;
137         }
138 
139         //点击停止菜单
140         private void tsmiStop_Click(object sender, EventArgs e)
141         {
142             this.tsmiRun.Enabled = true;
143             this.tsmiStop.Enabled = false;
144             //设置为停止状态
145             this.isRun = false;
146             this.timer_dingdanchaxun.Enabled = false;
147             //恢复图标显示
148             this.setIconImg(0);
149         }
150 
151     }
152 }

 效果如图:

右击托盘图标


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
udpsocket通信C#例子发布时间:2022-07-13
下一篇:
C#使用命令编译代码发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap