一个windows窗体程序,如果用户点击了窗体最小化按钮,则显示系统托盘图标,而且不显示在任务栏中。同时,为系统托盘图标添加了右键菜单项,以便用户可以直接退出程序。如果用户左键双击系统托盘图标,窗体将恢复。请给出C#的详细实例?
时间: 2024-05-06 16:17:09 浏览: 10
下面是一个C#的实例,演示如何将窗体最小化时显示系统托盘图标,并添加右键菜单项:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
namespace SystemTrayExample
{
public partial class Form1 : Form
{
private NotifyIcon _notifyIcon;
public Form1()
{
InitializeComponent();
InitializeSystemTrayIcon();
}
private void InitializeSystemTrayIcon()
{
_notifyIcon = new NotifyIcon();
_notifyIcon.Icon = new Icon("icon.ico"); // 设置托盘图标
_notifyIcon.Text = "System Tray Example"; // 设置托盘提示文本
_notifyIcon.Visible = false;
// 添加右键菜单项
ContextMenuStrip menuStrip = new ContextMenuStrip();
menuStrip.Items.Add("Exit", null, OnExitClicked);
_notifyIcon.ContextMenuStrip = menuStrip;
}
private void OnExitClicked(object sender, EventArgs e)
{
Application.Exit();
}
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// 最小化时隐藏窗体,显示托盘图标
Hide();
_notifyIcon.Visible = true;
}
else if (WindowState == FormWindowState.Normal)
{
// 窗体恢复时显示窗体,隐藏托盘图标
Show();
_notifyIcon.Visible = false;
}
}
private void _notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
// 双击托盘图标时恢复窗体
WindowState = FormWindowState.Normal;
}
}
}
}
```
在窗体的构造函数中,我们调用了 InitializeSystemTrayIcon() 方法来初始化系统托盘图标。这个方法会创建一个 NotifyIcon 对象,并设置托盘图标、提示文本和右键菜单项。
在窗体的 Resize 事件中,我们检查窗体是否被最小化。如果是,我们将窗体隐藏并显示托盘图标。如果窗体被恢复,我们则将窗体显示并隐藏托盘图标。
最后,我们监听托盘图标的 MouseDoubleClick 事件,当鼠标左键双击时,我们恢复窗体。右键菜单项的单击事件则直接调用 Application.Exit() 方法退出程序。