將Winform窗體程序縮到System tray的示例代碼
網(wǎng)上有很多將Winform窗體縮到 System tray的示例, 但多數(shù)不好用.
這里是一個簡單示例, 使用了Visual studio自帶的 NotifyIcon 控件和一個快捷菜單 contextMenuStrip控件.
增加一個 contextMenuStrip 控件, 新增兩個菜單項: 顯示界面和退出系統(tǒng).
增加一個 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 的快捷菜單項[顯示主界面]的處理函數(shù)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemOpen_Click(object sender, EventArgs e)
{
showUI();
}
/// <summary>
/// trayIcon 的快捷菜單項[退出系統(tǒng)]的處理函數(shù)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemExit_Click(object sender, EventArgs e)
{
var result = MessageBox.Show("請確認是否要退出系統(tǒng)?", "請確認", 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, "已最小化到系統(tǒng)托盤", ToolTipIcon.Info);
}
}
}

浙公網(wǎng)安備 33010602011771號