最近做了一个关于软件最小化到托盘里的功能,对此做了一点小小的总结,关于如何将软件最小化托盘里,并且点击对应小图标会有许多可供选择的菜单,其实主要用的控件是就NotifyIcon控件与contextMenuStrip控件的结合使用,利用contextMenuStrip控件添加对应的菜单以及菜单对应的功能。
第一步:首先介绍一下NotifyIcon控件的属性:
BalloonTipIcon —— 气泡提示的类型,有None(无)、Info(蓝色感叹号)、Warnning(黄色感叹号)、Error(小红叉)
比如:此图从别处借用
BalloonTipText —— 气泡提示的内容,如上图的None等气泡类型信息;
BalloonTipTitle —— 气泡提示的标题,如上图的Tip;
ContextMenuStrip —— 绑定的右键菜单;
Icon —— 所显示的图标;
Text —— 鼠标移上去时,显示的提示信息;
Visible —— 是否显示图标,当然,不显示就看不到了。
第二步:介绍如何使用NotifyIcon控件
首先添加一个click事件
private void notifyIcon1_Click(object sender, EventArgs e)
{
//EventArgs继承自MouseEventArgs,所以可以强转
MouseEventArgs Mouse_e = (MouseEventArgs)e;
//点鼠标右键,return
if (Mouse_e.Button == MouseButtons.Left)
{
ShowForm();
}
}
private void ShowForm()
{
try
{
if (CommonClass.OpenFormName == "LoginForm")
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
else if (CommonClass.OpenFormName == "MainForm")
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == "MainForm")
{
frm.Show();
frm.WindowState = FormWindowState.Normal;
}
}
}
else
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == "StepNewRegisterForm")
{
frm.Show();
frm.WindowState = FormWindowState.Normal;
frm.Activate();
}
}
}
this.notifyIcon1.Visible = false;// 隐藏程序小图标
}
catch (Exception ex)
{
//XtraMessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK);
}
}
第三步:
在使用NotifyIcon控件时,经常需要用到快捷菜单(ContextMenu控件)。添加快捷菜单,如下图:
1.添加右键菜单
2.将右键菜单和小图标绑定
3.如何为菜单项添加点击事件,步骤如下:
单击事件具体处理逻辑:
private void ShowForm()
{
try
{
if (CommonClass.OpenFormName == "LoginForm")
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
else if (CommonClass.OpenFormName == "MainForm")
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == "MainForm")
{
frm.Show();
frm.WindowState = FormWindowState.Normal;
}
}
}
else
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == "StepNewRegisterForm")
{
frm.Show();
frm.WindowState = FormWindowState.Normal;
frm.Activate();
}
}
}
this.notifyIcon1.Visible = false;// 隐藏程序小图标
}
catch (Exception ex)
{
}
}
第四步:如何在软件最小化时添加自定义提示内容:
public void HideForm()
{
try
{
//显示小图标
this.notifyIcon1.Visible = true;
//隐藏窗体
this.hide();
//取消在任务栏中显示
this.ShowInTaskbar = false;
//最小化到托盘的显示内容
notifyIcon1.ShowBalloonTip(3000, "程序最小化提示",
"图标已经缩小到托盘,打开窗口请双击图标即可。也可以使用Alt+S键来显示/隐藏窗体。",
ToolTipIcon.Info);
}
catch (Exception ex)
{
}
}
第五步:在步骤四中提到了一点快捷键的东西,由于所知不多,恐表达有误,就直接贴代码吧,留给自己积累一下,此处我借助了一个老项目封装的dll
private RegisterHotKeyHelper hotKey2 = new RegisterHotKeyHelper();
#region --加入快捷键
/// <summary>
/// 设置Alt+S的显示/隐藏窗体全局热键
/// </summary>
private void SetHotKey()
{
try
{
hotKey2.Keys = Keys.S;//可任意设置你想用的字母键
hotKey2.ModKey = RegisterHotKeyHelper.MODKEY.MOD_ALT;
hotKey2.WindowHandle = this.Handle;
hotKey2.WParam = 10003;
hotKey2.HotKey += new RegisterHotKeyHelper.HotKeyPass(hotKey2_HotKey);
hotKey2.StarHotKey();
}
catch (Exception ex)
{
}
}
以上内容仅作为学习积累,希望也能帮助到大家。