最近做了一个关于软件最小化到托盘里的功能,对此做了一点小小的总结,关于如何将软件最小化托盘里,并且点击对应小图标会有许多可供选择的菜单,其实主要用的控件是就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) { } }
以上内容仅作为学习积累,希望也能帮助到大家。