将Winform窗体程序缩到System tray的示例代码
网上有很多将Winform窗体缩到 System tray的示例, 但多数不好用.
这里是一个简单示例, 使用了Visual studio自带的 NotifyIcon 控件和一个快捷菜单 contextMenuStrip控件.
增加一个 contextMenuStrip 控件, 新增两个菜单项: 显示界面和退出系统.
增加一个 NotifyIcon 控件, 设置它的图标, 并绑定上面的菜单组件.
C#代码示例:
public partial class Form1 : Form
{
private readonly string APPLICATION_NAME = "我的程序";
private bool appShouldClose = false;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 恢复显示主界面
/// </summary>
private void showUI()
{
this.Show();
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
/// <summary>
/// trayIcon 双击鼠标用来显示主界面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
showUI();
}
/// <summary>
/// trayIcon 的快捷菜单项[显示主界面]的处理函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemOpen_Click(object sender, EventArgs e)
{
showUI();
}
/// <summary>
/// trayIcon 的快捷菜单项[退出系统]的处理函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemExit_Click(object sender, EventArgs e)
{
var result = MessageBox.Show("请确认是否要退出系统?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
appShouldClose = true;
this.Close();
}
}
/// <summary>
/// 缩小窗体到 sys tray
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (appShouldClose)
{
//nothing
}
else if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
this.WindowState = FormWindowState.Minimized;
this.Hide();
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(1000, APPLICATION_NAME, "已最小化到系统托盘", ToolTipIcon.Info);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-09-22 java stream(jrebel.com)
2022-09-22 Java generic cheatsheet(jrebel.com)
2022-09-22 maven cheatsheet(jrebel.com)
2022-09-22 Java collection (jrebel.com)
2022-09-22 Spring annotation(jrebel.com)
2022-09-22 Eclipse 快捷键(jrebel.com)