收藏 分销(赏)

c#制作托盘.doc

上传人:xrp****65 文档编号:7040077 上传时间:2024-12-25 格式:DOC 页数:7 大小:94KB
下载 相关 举报
c#制作托盘.doc_第1页
第1页 / 共7页
c#制作托盘.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
利用c#制作托盘程序,并禁止多个应用实例运行 托盘程序的制作: 1.把NotifyIcon控件拉一个到窗体上,并设置NotifyIcon的Icon(很重要!否则运行后看不到效果) 2.窗体关闭时,将程序最小化到系统托盘上 private void Form1_FormClosing(object sender, FormClosingEventArgs e) {     //MessageBox.Show("程序将最小化到系统托盘区");     e.Cancel = true; // 取消关闭窗体      this.Hide();     this.ShowInTaskbar = false;//取消窗体在任务栏的显示      this.notifyIcon1.Visible = true;//显示托盘图标  }  3.放一个上下文菜单,添加几个基本项,"显示主窗体","退出" ,将这个菜单挂到NotifyIcon上 private void menuShow_Click(object sender, EventArgs e) {          this.Show();     this.ShowInTaskbar = true;     this.notifyIcon1.Visible = false; } private void menuExit_Click(object sender, EventArgs e) {     this.Dispose(true);     Application.ExitThread(); }  4.左键单击托盘图标时,显示主窗体,右击时当然是弹出上面设置的菜单 private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) {     if (e.Button == MouseButtons.Left)     {         this.Show();         this.ShowInTaskbar = true;         this.notifyIcon1.Visible = false;     } } 防止这个程序同时运行多个 using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; namespace LuceneTest {     static class Program     {         /**//// <summary>         /// 应用程序的主入口点。         /// </summary>         [STAThread]         static void Main()         {             bool bCreatedNew;             Mutex m = new Mutex(false, "Product_Index_Cntvs", out bCreatedNew);             if (bCreatedNew)             {                 Application.EnableVisualStyles();                 Application.SetCompatibleTextRenderingDefault(false);                 Application.Run(new Form1());             }         }     } } 一. 托盘程序的主要步骤及解决方法:   为什么说用VisualC#可以十分方便的做一个托盘程序,主要的原因是在.Net框架的软件开发包( .Net FrameWork SDK)中的WinForm组件中定义了一个专门用来开发托盘程序的组件--NotifyIcon组件。下面就来介绍一下这个组件的具体用法和程序设计中的主要的技巧。   (1).如何在程序运行后隐藏窗体:   我们知道托盘程序运行后是无法看见主窗体的,他只会显示在工具栏上。在用VisualC#设计此类程序的时候,可以用二种方法使得程序运行后不显示主窗体。其中一种方法是重载主窗体中的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(面向对象)语言,在VisualC#中任何东西都可以作为对象来处理。当然对应一个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#做一个托盘程序并不是一件复杂的事情,而是一件比较轻松的事情。同样也可使我们明白,VisualC#虽然是一种功能强大的程序设计语言,但它只是一个打开.Net FrameWorkSDK的钥匙,正是这个内容丰富的软件包,才使得各个.Net程序开发语言有了施展自身功能更广阔的舞台。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服