托盘程序的主要步骤及解决方法

2007/7/21 13:26:26


阅读全文(2814) | 回复(1) | 编辑 | 精华

cpf20072008 @ 2007-07-13 08:47 为什么说用Visual C#可以十分方便的做一个托盘程序,主要的原因是在.Net框架的软件开发包( .Net FrameWork SDK )中的WinForm组件中定义了一个专门用来开发托盘程序的组件--NotifyIcon组件。下面就来介绍一下这个组件的具体用法和程序设计中的主要的技巧。        (1).如何在程序运行后隐藏窗体:        我们知道托盘程序运行后是无法看见主窗体的,他只会显示在工具栏上。在用Visual C#设计此类程序的时候,可以用二种方法使得程序运行后不显示主窗体。其中一种方法是重载主窗体中的OnActivated( )事件,OnActivated( )事件是在窗体激活的时候才触发的。通过重载此事件可以达到隐藏主窗体的目的。具体程序代码如下:      protected override void OnActivated ( EventArgs e )    {    this.Hide ( ) ;    }        另外一种方法是在初始化主窗体的时候完成的,通过设定主窗体的属性来达到不显示的目的。具体的程序代码如下:      this.MaximizeBox = false ;    this.MinimizeBox = false ;    this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;        在本文介绍的程序中,使用了第二种方法。    (2).如何为托盘程序设定显示图标:        在NotifyIcon组件中有一个属性icon就是来设定托盘图标的,由于Visual C#是一个完全的OOP (面向对象)语言,在Visual C#中任何东西都可以作为对象来处理。当然对应一个icon来说,也可以用对象的方法来处理他。我们通过下列语句来得到一个icon对象:      private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ;        请注意:在编译好的程序中,必须要在同一个目录中有一个Tray.ico图标文件,否则程序运行时候会出错的。        通过下列语句把此icon对象付给NotifyIcon组件中的icon属性,此时如果程序正确编译,则此icon就会显示在工具栏中了。      TrayIcon.Icon = mNetTrayIcon ;        (3).设定当鼠标停留在托盘程序上显示的文本内容:        NotifyIcon组件中有一个属性Text。设定这个属性的内容,就是鼠标停留在托盘图标上显示的内容了。具体语句如下:      TrayIcon.Text = "用Visual C#做托盘程序" + "n" + "作者:马金虎于2001.12.08" ;        (4).如何在托盘程序加入菜单:        在NotifyIcon组件中有一个对象叫ContextMenu,在托盘程序中显示出的菜单就是通过设定此对象来实现的。以下的程序代码是为托盘程序加入菜单项:      notifyiconMnu = new ContextMenu ( mnuItms ) ;    TrayIcon.ContextMenu = notifyiconMnu ;    //为托盘程序设定菜单        (5).如何设定ContextMenu对象的内容:        ContextMenu对象是托盘程序的菜单的结构,所以如何设定此对象,在本程序中是比较关键的。在程序中,是通过定义一个菜单项数组,并对这个数组设定不同的值(这当中包括菜单的一些属性和事件),然后把这个数组同时赋值给ContextMenu对象,来实现对ContextMenu对象的设置过程的。以下是程序中具体代码:      //定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象    MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;    mnuItms [ 0 ] = new MenuItem ( ) ;    mnuItms [ 0 ] .Text = "用Visual C#做托盘程序!" ;    mnuItms [ 0 ] .Click += new System.EventHandler ( this.showmessage ) ;      mnuItms [ 1 ] = new MenuItem ( "-" ) ;    mnuItms [ 2 ] = new MenuItem ( ) ;    mnuItms [ 2 ] .Text = "退出系统" ;    mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;    mnuItms [ 2 ] .DefaultItem = true ;      notifyiconMnu = new ContextMenu ( mnuItms ) ;    TrayIcon.ContextMenu = notifyiconMnu ;    //为托盘程序加入设定好的ContextMenu对象        当成功加入了ContextMenu对象后,在程序编译完成运行时,当鼠标右键点击托盘图标,程序会自动弹出ContextMenu对象封装好的菜单。        二. 本文介绍的程序源代码( Tray.cs ):    Tray.cs源程序代码:      using System ;    using System.Drawing ;    using System.Collections ;    using System.ComponentModel ;    using System.Windows.Forms ;    using System.Data ;    //导入在程序中使用到的名称空间    public class Tray : Form    {     private System.ComponentModel.Container components = null ;     private Icon mNetTrayIcon = new Icon ( "Tray.ico" ) ;     private NotifyIcon TrayIcon ;     private ContextMenu notifyiconMnu ;       public Tray()     {      //初始化窗体中使用到的组件      InitializeComponent ( ) ;      //初始化托盘程序的各个要素      Initializenotifyicon ( ) ;     }      private void Initializenotifyicon ( )    {     //设定托盘程序的各个属性     TrayIcon = new NotifyIcon ( ) ;     TrayIcon.Icon = mNetTrayIcon ;     TrayIcon.Text = "用Visual C#做托盘程序" + "n" + "作者:马金虎于2001.12.08" ;     TrayIcon.Visible = true ;     TrayIcon.Click += new System.EventHandler ( this.click ) ;       //定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象     MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;     mnuItms [ 0 ] = new MenuItem ( ) ;     mnuItms [ 0 ] .Text = "用Visual C#做托盘程序!" ;     mnuItms [ 0 ] .Click += new System.EventHandler ( this.showmessage ) ;       mnuItms [ 1 ] = new MenuItem ( "-" ) ;       mnuItms [ 2 ] = new MenuItem ( ) ;     mnuItms [ 2 ] .Text = "退出系统" ;     mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;     mnuItms [ 2 ] .DefaultItem = true ;       notifyiconMnu = new ContextMenu ( mnuItms ) ;     TrayIcon.ContextMenu = notifyiconMnu ;     //为托盘程序加入设定好的ContextMenu对象    }    public void click ( object sender , System.EventArgs e )    {     MessageBox.Show ( "Visual C#编写托盘程序中的事件响应" ) ;    }      public void showmessage ( object sender , System.EventArgs e )    {     MessageBox.Show ( "你点击了菜单的第一个选项" ) ;    }      public void ExitSelect ( object sender , System.EventArgs e )    {     //隐藏托盘程序中的图标     TrayIcon.Visible = false ;     //关闭系统     this.Close ( ) ;    }    //清除程序中使用过的资源    public override void Dispose ( )    {     base.Dispose ( ) ;     if ( components != null )      components.Dispose ( ) ;    }      private void InitializeComponent ( )    {     this.SuspendLayout ( ) ;     this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;     this.ClientSize = new System.Drawing.Size ( 320 , 56 ) ;     this.ControlBox = false ;     this.MaximizeBox = false ;     this.MinimizeBox = false ;     this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;       this.Name = "tray" ;     this.ShowInTaskbar = false ;     this.Text = "用Visual C#做托盘程序!" ;     this.ResumeLayout ( false ) ;      }    static void Main ( )    {     Application.Run ( new Tray ( ) ) ;    }    }        三. 总结:        通过以上介绍,可以看出用Visual C#做一个托盘程序并不是一件复杂的事情,而是一件比较轻松的事情。同样也可使我们明白,Visual C#虽然是一种功能强大的程序设计语言,但它只是一个打开.Net FrameWork SDK的钥匙,正是这个内容丰富的软件包,才使得各个.Net程序开发语言有了施展自身功能更广阔的舞台。

Qr

Posted by Qr on 2007/7/21 13:26:26

回复:托盘程序的主要步骤及解决方法

2007/7/21 13:32:21


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

比较实用,呵呵

真不准

Posted by 真不准 on 2007/7/21 13:32:21

» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144830471 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号