C#如何把程序最小化到托盘
时间: 2024-01-14 19:03:09 浏览: 38
在 C# 中,你可以使用 NotifyIcon 类来实现将程序最小化到系统托盘的功能。下面是一个简单的示例代码:
首先,在你的窗体类中声明一个 NotifyIcon 对象和一个 ContextMenu 对象:
```csharp
private NotifyIcon notifyIcon;
private ContextMenu contextMenu;
```
然后,在窗体的构造函数中初始化这两个对象,并设置相应的属性和事件:
```csharp
public Form1()
{
InitializeComponent();
// 初始化 NotifyIcon
notifyIcon = new NotifyIcon();
notifyIcon.Icon = new Icon("icon.ico"); // 设置托盘图标
notifyIcon.Text = "My App"; // 设置鼠标悬停时显示的文本
// 初始化 ContextMenu
contextMenu = new ContextMenu();
contextMenu.MenuItems.Add("打开", OnOpen); // 添加打开菜单项的点击事件
contextMenu.MenuItems.Add("退出", OnExit); // 添加退出菜单项的点击事件
// 将 ContextMenu 关联到 NotifyIcon
notifyIcon.ContextMenu = contextMenu;
// 设置双击托盘图标时的事件
notifyIcon.DoubleClick += OnOpen;
// 显示托盘图标
notifyIcon.Visible = true;
}
```
接下来,实现打开和退出菜单项的点击事件:
```csharp
private void OnOpen(object sender, EventArgs e)
{
// 还原窗体
this.WindowState = FormWindowState.Normal;
this.Activate();
}
private void OnExit(object sender, EventArgs e)
{
// 关闭程序
this.Close();
}
```
最后,在窗体的 Resize 事件中处理窗体最小化时的逻辑:
```csharp
private void Form1_Resize(object sender, EventArgs e)
{
// 判断窗体是否最小化
if (this.WindowState == FormWindowState.Minimized)
{
// 隐藏窗体
this.Hide();
}
}
```
这样,当你的窗体最小化时,程序就会隐藏到系统托盘中。你可以通过点击托盘图标或右键菜单来打开窗体或退出程序。记得在窗体关闭时,调用 `notifyIcon.Dispose()` 来释放资源。
希望这个示例对你有帮助!