NotifyIcon控件
发布时间:2013-04-14 14:43:15
发布时间:2013-04-14 14:43:15
一、notifyicon控件的用法
NotifyIcon 控件提供了编写此功能的方法。Icon属性定义显示在通知区域中的图标。图标的弹出菜单由 ContextMenu属性确定。Text属性分配工具提示文本。要在通知区域中显示图标,必须将 Visible属性设置为 true。
第一步:新创建一个项目Form1,text属性修改为自己的项目名称;
第二步:向Form1窗口中添加一个NotifyIcon控件,修改其Name属性为 MyNotifyIcon。修改其Text属性与应用程序的标题相同。这是因为NotifyIcon显示在系统托盘中时,Text属性中保存的文本为鼠标移动到程序图标上时的提示信息。修改Icon属性,为NotifyIcon添加一个图标;
在Form1的属性窗口上,把Icon属性也选择为与NotifyIcon相同的图标。修改ShowInTaskBar属性值为False,这样,应用程序在运行时就不会出现在任务栏中;
添加双击NotifyIcon时的事件处理代码(DoubleClick)
private void MynotifyIcon_DoubleClick(object sender, System.EventArgs e)
{
if(this.Visible)
{
this.Hide();
}
else
{
this.Show();
}
}
在使用NotifyIcon控件时,经常需要用到快捷菜单(ContextMenu控件)。使用方法为,向Form1中添加contextmenu控件,添加两个菜单项,一个为打开主界面,一个为退出。在NotifyIcon的ContextMenu属性中选择刚刚添加的ContextMenu控件。这样在图标上可以通过快捷菜单执行程序的各种功能。
打开主界面的菜单编码为:
private void 打开主界面ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.Visible)
{
this.Hide();
}
else
{
this.Show();
}
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
Form1_SizeChanged事件,效果为最小化窗体时,在系统托盘区域显示程序图标及气球提示:
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.Hide();
this.notifyIcon1.Visible = true;
this.notifyIcon1.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);
}
}
这样就实现了上述功能,需要强调的是:this.notifyIcon1.ShowBalloonTip(30, "注意", "大家好,这是一个事例", ToolTipIcon.Info);为气球提示的实现,代码WindowState == FormWindowState.Minimized为窗体最小化的判断条件,代码this.WindowState = FormWindowState.Normal;为窗体还原的实现。
二、NotifyIcon实现托盘程序
NotifyIcon 控件的常用属性
属性:Icon
类型:System.Drawing.Icon
说明:将在系统任务栏中显示的图标。可以在设计时指定,也可在运行时动态指定。
属性:Text
类型:String
说明:用于指定当鼠标停留在小图标上时显示的信息。
属性:Visible
类型:Bool
说明:用于设置小图标是否显示。
注意:如果程序退出前没有将其设置为false,那么小图标将一直停留在系统栏,直到鼠标从上面经过时才会消失。
操作:Click
说明:当鼠标单击时激发的事件
操作:DoubleClick
说明:当鼠标双击时激发的事件
操作:MouseDown
说明:当鼠标其中一键按下时激发的事件
操作:MouseUp
说明:当鼠标其中一键松开时激发的事件
操作:MouseMove
说明:当鼠标其中一键从上掠过时激发的事件
BalloonTipIcon -- 气球工具提示关联的图标
BallonnTipText -- 气球工具提示关联的文本
BallonnTipText -- 气球工具提示的标题
实践:
要求将程序最小化的同时让程序的图标出现在“系统托盘”的位置上,而不显示在“任务栏”中。鼠标双击系统托盘中的图标时,还原窗体。
<1>.ShowInTaskbar属性控制是否在任务栏显示窗体。
<2>.WindowState 属性指出当前Winform窗体的窗口状态。
当前窗口状态只有三种情况:
FormWindowState.Maximized;//最大化窗口
FormWindowState.Minimized;//最小化窗口
FormWindowState.Normal;//默认的窗口大小
<3>.使用notifyIcon控件是控制出现在系统托盘的内容的。
notifyIcon.Icon -- 指定出现在任务栏中的Icon图标
notifyIcon.Text -- 显示的文本
notifyIcon.BalloonTipIcon -- 气球工具提示关联的图标
notigyIcon.BallonnTipText -- 气球工具提示关联的文本
notigyIcon.BallonnTipText -- 气球工具提示的标题。
<4>.应在Form_SizeChange事件中完成判断,具体代码:
///
/// 最小化值系统托盘
///
///
///
private void Form1_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized) //判断是否最小化
{
this.ShowInTaskbar = false; //不显示在系统任务栏
notifyIcon1.Visible = true; //托盘图标可见
}
}
///
/// 还原(notifyIcon的鼠标双击事件)
///
///
///
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = true; //显示在系统任务栏
this.WindowState = FormWindowState.Normal; //还原窗体
notifyIcon1.Visible = false; //托盘图标隐藏
}
}
<5>.给notifyIcon添加右键菜单:
主窗体中拖入一个contextMenuStrip控件contextMenuStrip1,点中控件,在上下文菜单中添加菜单,notifyIcon1的contextMenuStrip行为中选中contextMenuStrip1作为上下文菜单。
NotifyIcon.ShowBalloonTip (time) 在任务栏中持续显示气球提示指定的时间(以毫秒为单位)。最小和最大超时值由操作系统执行,一般分别为 10 秒和 30 秒,但这可能因操作系统而异。太大或太小的超时值将调整为适当的最小值或最大值。此外,如果用户看起来没有使用计算机(没有键盘或鼠标事件发生),则系统不将此时间计算在超时值内。
一次只能在任务栏中显示一个气球提示。如果当前在任务栏中已经显示了一个气球提示,则尝试显示其他气球提示将导致忽略 timeout 值。行为会因气球提示是来自其他应用程序,还是来自同一应用程序而稍有不同。如果第二个气球提示来自其他应用程序,第一个气球提示将在第二个提示出现之前持续显示最小超时值,而不管 timeout. 的值是多少。如果这两个气球提示来自同一应用程序,则第一个气球提示在再次调用 ShowBalloonTip 方法时立即关闭。标题文本将在气球顶部附近以粗体显示。
private void Form1_Click(object sender, EventArgs e)
{
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(10);
}
private void SetBalloonTip()
{
notifyIcon1.Icon = SystemIcons.Exclamation;
notifyIcon1.BalloonTipTitle = "Balloon Tip Title";
notifyIcon1.BalloonTipText = "Balloon Tip Text.";
notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
this.Click += new EventHandler(Form1_Click);
}
设计页面
运行页面