C#语言基础知识(8):C# 托盘图标闪烁

在用户正在登录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 }

效果如图:

右击托盘图标

C#语言基础知识(8):C# 托盘图标闪烁

时间: 2024-08-03 16:50:42

C#语言基础知识(8):C# 托盘图标闪烁的相关文章

OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的

C#语言基础知识(2):C#中多态

我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态. 1: OverRide 实现多态 1 public class Animal 2 { 3 public virtual void Eat() 4 { 5 Console.WriteLine("Animal eat"); 6 } 7 } 8 public class Dog : Animal 9 { 10 public override void Eat() 11 { 12 Console.WriteLin

李洪强iOS开发之OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程   二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行

C#语言基础知识(1):C#中关于重载和重写

Overload:重载就是在同一个类中,方法名相同,参数列表不同.参数列表不同包括:参数的个数不同,参数类型不同. 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace OverLoading 6 { 7 class Program 8 { 9 public static int max(int i, int j) //静态方法 10 { 11 if (i > j) 12 re

C#语言基础知识(3):C#中转义符

C#转义字符: 一种特殊的字符常量:以反斜线"\"开头,后跟一个或几个字符.具有特定的含义,不同于字符原有的意义,故称“转义”字符.主要用来表示那些用一般字符不便于表示的控制代码. 它的作用是消除紧随其后的字符的原有含义用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义” 用可以看见的字符表示那不可以看见的字符, 如'\n'表示换行 常用的转义字符及其含义: \’ 单引号\” 双引号\\ 反斜杠\0 空\a 警告(产生峰鸣)\b 退格\f 换页\

C#语言基础知识(4):C#中的String.Format方法

定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2="xiaobei";Response.Write(String.Format("Hello {0},I'm {1}",p1,p1));(2)Response.Write(String.Format("Hello {0},I'm {1}","xi

C语言基础知识----易让人头疼的关键字----const && typedef && define

const关键字 const=read only,修饰的为只读变量而不是常量.const修饰的变量不能用作数组的维数也不能放在switch语句的case:之后. 主要作用有: 1.通过把不希望被修改的变量或参数用const来修饰,编译器会保护这些变量不被修改增强系统的可靠性: 2.增强代码的可读性 [html] view plaincopyprint? const int a;      //a为常量不能被修改 int const a;      //a为常量不能被修改 const int *a

C#语言基础知识(9):ScrollBarsEnabled的使用

在WinForm中通过WebBrowser获取网页,我想把WebBrowser的ScollBar去掉,我的网页不需要滚动条. 设置方法如下:单击WebBrowser设计页面,在属性页面有一个ScrollBarsEnabled.设置为false即可. C#语言基础知识(9):ScrollBarsEnabled的使用

C#语言基础知识(5):Partial Class部分类

Partial Class,部分类 或者分布类.顾名思义,就是将一个类分成多个部分.比如说:一个类中有3个方法,在VS 2005将该类中3个方法分别存放在3个不同的.cs文件中.这样做的好处:1.一个大型的项目类可以同时分成不同的区块交由不同的程序员拽写,同时进行.2.若由系统自动产生的source,可以用独立的Partial Class加入,而不必更改到原先类.3.当类(Class)很大时,可以用Partial Class做功能性划分,这也是一种不错的分类方式. 如果您在开发项目的公用函数库,