用Visual C#做托盘程序

所谓托盘程序顾名思义就是象托起的盘子一样的程序。而所谓的托起的盘子就是程序运行中显示出的图标,而托起的位置就是视窗系统的的工具栏了。托盘程序具有直观、占用屏幕空间较小并且可以为它定义多个功能菜单,这就给操作者带来了方便,所以越来越多的程序设计者都把程序设计成托盘这种方式。我们已经看过了用其他语言设计托盘程序的例子,其中的大部分,整个设计过程还是相对烦琐的。而对于微软公司极力推荐的下一代程序开发语言--Visual C#来说,却可以十分方便设计出一个托盘程序。本文就是介绍Visual C#设计托盘程序的具体过程。

首先来介绍一下本文中设计托盘程序所需要的环境:

(1)微软公司视窗2000服务器版

(2).Net FrameWork SDK Beta 2

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

为什么说用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对象封装好的菜单。

时间: 2024-10-02 08:41:05

用Visual C#做托盘程序的相关文章

C#做托盘程序

程序 所谓托盘程序顾名思义就是象托起的盘子一样的程序.而所谓的托起的盘子就是程序运行中显示出的图标,而托起的位置就是视窗系统的的工具栏了.托盘程序具有直观.占用屏幕空间较小并且可以为它定义多个功能菜单,这就给操作者带来了方便,所以越来越多的程序设计者都把程序设计成托盘这种方式.我们已经看过了用其他语言设计托盘程序的例子,其中的大部分,整个设计过程还是相对烦琐的.而对于微软公司极力推荐的下一代程序开发语言--Visual C#来说,却可以十分方便设计出一个托盘程序.本文就是介绍Visual C#设

我想用C#.net做一个类似迅雷的桌面右下角广告程序,看到网上有用托盘程序的,有不用的。不使用托盘程序的可以实现窗体在停留几秒后自动消失,请问在托盘程序中也可以实现吗?

问题描述 我想做一个右下角的广告程序,使用托盘程序,还能实现自动淡入淡出,请问可以吗? 解决方案 解决方案二:太麻烦了.我不会.不过不建议你这么干.解决方案三:用户的电脑不是用来放广告的.现在专门有人做绿色版的.解决方案四:可以需要用到.net的控件NotifyIconPictureBoxForm效果好一点NotifyIconPictureBoxForm+api效果差一点NotifyIconPictureBoxForm+定位

用VB编写托盘程序

在WINDOWS里,右下角有许多应用程序的图标.而程序本身的窗口是隐藏的,若你需要调用应用程序的窗口,则双击该图标即可.这种程序称为托盘程序.这是WINDOWS98操作系统的一大特色.使用户能够更加快捷的显示和隐藏应用程序,可以使任务栏不致于太乱.托盘程序在Visual Basic里是怎么实现的呢? 编写托盘程序主要解决两个问题: (1)创建.修改.删除托盘: (2)如何对托 盘接收到的消息进行处理. 这就要用到几个Windows API函数. 首先,Shell_NotifyIcon是用于托盘的

windows-如何用VS2005对SQL数据库进行新增保存修改,用Visual C# Windows应用程序

问题描述 如何用VS2005对SQL数据库进行新增保存修改,用Visual C# Windows应用程序 表名STU 本人小白,求教大神给出具体的步奏 解决方案 `using System.Data.OleDb; string connString, sqlString; OleDbConnection conn = new OleDbConnection(); OleDbCommand comm = new OleDbCommand(); OleDbDataAdapter da = new O

C# 托盘程序激活问题

问题描述 我用C#里的notifyIcon控件做的最小化到托盘此时,我想实现通过一个外部程序激活这个最小化到托盘的程序该如何实现啊?谢谢各位大虾了 解决方案 解决方案二:把托盘程序注册为系统服务,简单方便解决方案三:是一个外部程序控制你的托盘程序还是一个程序自动触发托盘程序呢!解决方案四:引用2楼david_anwei的回复: 是一个外部程序控制你的托盘程序还是一个程序自动触发托盘程序呢! 我要实现的是,程序A最小化到托盘去了这时候程序B能够激活程序A,使之显示在客户面前,让客户操作解决方案五:

VC 制作系统托盘程序实现将窗口最小化到系统托盘

VC 制作系统托盘程序实现将窗口最小化到系统托盘 2008年01月11日 星期五 10:24 前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^先在类中定义一个结构变量NOTIFYICONDATA pnid;然后在OnInitDialog进行初始化    pnid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//该结构体大小    pnid.hWnd=m_hWnd;    //窗口句柄    pnid.uID=(UINT)m_hIcon

VB.NET编程之托盘程序篇

编程|程序 本文程序的设计及运行环境 (1)Windows 2000 Service (2)Net Framework SDK 正式版 静态托盘程序的编写过程 所谓静态托盘程序是指程序运行后,在系统托盘区的图标处于静止状态的托盘程序.动态托盘程序正好与之相反,它是指在系统托盘区图标呈现动画效果的一类托盘程序.下面就来探讨一下VB.NET是如何实现静态托盘程序. .Net FrameWork SDK为编写托盘程序提供了一个组件:NotifyIcon组件.NotifyIcon组件是一个WinForm

一个托盘程序演示--闹钟 Alert

想必大家都看见过那些在系统托盘(Tray)中的程序吧,本文就演示了如何创建一个这样的托盘程序Alert.Alert是一个运行在系统托盘中的小闹钟,它在设定的时间后触发,运行屏幕保护程序并播放一首歌曲.这个程序是很久以前写的了,而我现在没有安装VC++了,所以本文的截图都是朋友Leoyin帮我做出来后传给我的(好麻烦,呵呵),在此也对他表示感谢! 建立一个托盘程序的关键在于Windows API-Shell_NotifyIcon()的使用,这个API的声明包含在ShellAPI.H文件中.请在St

迁移NetBeans Visual Web Pack应用程序至NetBeans IDE 6.0

本文档帮助您把 NetBeans Visual Web Pack 应用程序迁移到 NetBeans IDE 的 Web 支持上. 要使用本教程,您需要安装 NetBeans IDE 6.0,并且选择"Web & Java EE"或"All"安装包.要了解有关操作 NetBeans IDE 的更多信息,请参见 NetBeans 网站上的支持和文档页. Visual Web JSF 向后兼容工具包提供了增补库,可视 Web 设计师需要用它们来支持基于 J2SE