问题描述
现在很多程序都有托盘功能,而我们的聊天工具更是如此,无论是QQ,旺旺,飞鸽传书等等,都是以托盘的形式工作在后台,对消息进行监听的.而VS2005给我们提供了现成的控件,来完成托盘的功能,下面我结合代码讲解下项目中可能用到的托盘技巧.1.如何实现托盘功能:在VS2005中直接添加notifyIcon控件,然后设置下icon属性,给其设置个图标即可,使用托盘功能.但是托盘并不能实现我们要求的功能,具体的功能实现,需要我们手工添加代码实现.2.如何最小化时自动到托盘privatevoidForm1_Resize(objectsender,System.EventArgse){if(this.WindowState==FormWindowState.Minimized){this.Visible=false;this.notifyIcon1.Visible=true;}}3.如何双击托盘恢复原状privatevoidnotifyIcon1_Click(objectsender,System.EventArgse){this.Visible=true;this.WindowState=FormWindowState.Normal;this.notifyIcon1.Visible=false;}4.实现托盘的闪烁功能(如QQ有消息时的闪烁)(1).首先我们在空白窗体中拖入一个NotifyIcon控件和定时控件privateSystem.Windows.Forms.NotifyIconnotifyIcon1;privateSystem.Windows.Forms.Timertimer1;(2).其次,我们准备两张ico图片,用来显示在任务栏,其中一张可用透明的ico图片,分别叫做1.ico和2.ico;并且建立两个icon对象分别用来存放两个ico图片;privateIconico1=newIcon("1.ico");privateIconico2=newIcon("2.ICO");//透明的图标(3).在Form_load中初始化notifyicon:privatevoidForm1_Load(objectsender,System.EventArgse){this.notifyIcon1.Icon=ico1;//设置程序刚运行时显示在任务栏的图标this.timer1.Enable=true;//将定时控件设为启用,默认为false;}(4).先设置一个全局变量i,用来控制图片索引,然后创建定时事件,双击定时控件就可以编辑inti=0;privatevoidtimer1_Tick(objectsender,System.EventArgse){//如果i=0则让任务栏图标变为透明的图标并且退出if(i<1){this.notifyIcon1.Icon=ico2;i++;return;}//如果i!=0,就让任务栏图标变为ico1,并将i置为0;elsethis.notifyIcon1.Icon=ico1;i=0;}