C# WinForm最小化到托盘以及托盘右键菜单
一、添加控件
首先,先拖一个NotifyIcon到主窗体,然后设置NotifyIcon的图标,不然等下最小化后,都找不到那个程序了,还有那个Text也是,不写名字,就默认是NotifyIcon了..如下图:
二、添加双击事件
然后双击NotifyIcon,代码如下:
C/C++ Code复制内容到剪贴板
- /// <summary>
- /// 添加双击托盘图标事件(双击显示窗口)
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- if (WindowState == FormWindowState.Minimized)
- {
- //还原窗体显示
- WindowState = FormWindowState.Normal;
- //激活窗体并给予它焦点
- this.Activate();
- //任务栏区显示图标
- this.ShowInTaskbar = true;
- //托盘区图标隐藏
- notifyIcon1.Visible = false;
- }
- }
C/C++ Code复制内容到剪贴板
- /// <summary>
- /// 判断是否最小化,然后显示托盘
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void F_Main_SizeChanged(object sender, EventArgs e)
- {
- //判断是否选择的是最小化按钮
- if (WindowState == FormWindowState.Minimized)
- {
- //隐藏任务栏区图标
- this.ShowInTaskbar = false;
- //图标显示在托盘区
- notifyIcon1.Visible = true;
- }
- }
C/C++ Code复制内容到剪贴板
- // Form_Closing是窗口即将关闭时询问你是不是真的关闭才有Cancel事件
- /// <summary>
- /// 确认是否退出
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- /// 只有Form_Closing事件中 e.Cancel可以用。
- /// 你的是Form_Closed事件。 Form_Closed事件时窗口已关了 ,Cancel没用了;
- private void F_Main_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
- {
- // 关闭所有的线程
- this.Dispose();
- this.Close();
- }
- else
- {
- e.Cancel = true;
- }
- }
下面是托盘右键菜单的制作:
先拖一个ContextMenuStrip到主界面,然后添加你的右键菜单,在然后绑定给NotifyIcon即可,图形如代码如下
点击:
添加你的右键菜单,在然后绑定给NotifyIcon
C/C++ Code复制内容到剪贴板
- // 添加托盘程序右键菜单项
- // 最小化
- // 添加日期 -- 2018-09-12 18:31
- private void toolStripMenuItemMinimize_Click(object sender, EventArgs e)
- {
- this.WindowState = FormWindowState.Minimized;
- this.notifyIcon1.Visible = true;
- this.Hide();
- }
添加好菜单以后,双击添加方法:
C/C++ Code复制内容到剪贴板
- /// <summary>
- /// 托盘右键菜单一
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void 同步实名制数据ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- DoorBaseInfo(sender,e);
- }
- /// <summary>
- /// 托盘右键退出程序
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
- {
- // 关闭所有的线程
- this.Dispose();
- this.Close();
- Application.Exit();
- }
- }