C# 托盘程序设计
来源:互联网 发布:linux trace 编辑:程序博客网 时间:2024/06/05 00:21
C#托盘程序
一. 托盘程序的主要步骤及解决方法:
为什么说用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框架的软件开发包( .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#做一个托盘程序并不是一件复杂的事情。
--------------------------------------------------------------------
用控件的方法:
C#处理的窗体最小化到托盘,以及双击恢复窗口代码。
一:添加notifyIcon1控件。添加各种事件响应······
二:右键快捷菜单的添加:
1:添加contextMenuStrip控件,设置各个项
2:添加各个项的处理事件
3:与前面的notifyIcon1控件绑定(通过contextMenuStrip属性设置)
点击(此处)折叠或打开
- #region 私有方法 处理窗体的 显示 隐藏 关闭(退出)
- private void ExitMainForm() //关闭(退出)
- {
- if (MessageBox.Show("您确定要退出化本系统吗?", "确认退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
- {
- this.notifyIcon1.Visible = false;
- this.Close();
- this.Dispose();
- Application.Exit();
- }
- }
- private void HideMainForm() //隐藏
- {
- this.Hide();
- }
- private void ShowMainForm() //显示主窗口
- {
- this.Show();
- this.WindowState = FormWindowState.Normal;
- this.Activate();
- }
- #endregion
- #region 右键菜单处理,显示 隐藏 退出
- private void menuItem_Show_Click(object sender, EventArgs e)
- {
- ShowMainForm();
- }
- private void menuItem_Hide_Click(object sender, EventArgs e)
- {
- HideMainForm();
- }
- private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ExitMainForm();
- }
- private void 还原ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- ShowMainForm();
- }
- #endregion
- #region 双击托盘上图标时,显示窗体
- private void notifyIcon1_DoubleClick_1(object sender, EventArgs e)
- {
- ShowMainForm();
- }
- #endregion
- #region 点最小化按钮时,最小化到托盘
- private void Form_Server_SizeChanged(object sender, EventArgs e)
- {
- if (this.WindowState == FormWindowState.Minimized)
- {
- HideMainForm();
- }
- }
- #endregion
- #region 窗体关闭时最小化到托盘
- private void Form_Server_FormClosing(object sender, FormClosingEventArgs e)
- {
- e.Cancel = true;
- HideMainForm();
- }
- #endregion
0 0
- C# 托盘程序设计
- C# 托盘程序设计
- C#做托盘程序
- C#托盘程序
- c# 托盘程序
- C#托盘程序
- C#做托盘程序
- C#做托盘程序
- c#最小化到托盘
- C# 最小化至托盘
- C#托盘窗口显示
- C# 托盘程序
- C#托盘图标
- C#实现托盘图标
- C#实现闪动托盘
- C# 托盘程序
- C# 托盘程序
- [C#]C# 最小化 托盘
- poj1321 dfs
- ZOJ-1392
- [回溯]Stamps UVA165
- HBase 异常记录 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
- poj1094
- C# 托盘程序设计
- 黑马程序员--交通灯管理系统
- Object 和 String 的equals比较
- Kali Linux渗透测试实战 2.2 操作系统指纹识别
- [转]软件开发基本原则(二)典型错误
- 凌乱的2013咱就这样了,祝福我在2014找回咱的场子
- Linux下Mysql的一些基本操作:
- 死亡
- 代码重构