C#一行程式碼實現(01)最小化到通知區域
- 2020 年 10 月 24 日
- 筆記
- C#一行程式碼實現
主要功能
- 實現
Winform程式最小化後,隱藏任務欄顯示,在通知區域顯示。左鍵點擊通知區域圖標,可以彈出菜單,包含開機啟動和退出程式,可以根據需求進行訂製。
一行程式碼
private void Form1_Load(object sender, EventArgs e)
{
this.ExAddNotifyIcon();
}
程式碼封裝
/// <summary>
/// 添加通知圖標,左鍵點擊切換窗口顯示,右鍵點擊彈出菜單
/// </summary>
/// <param name="form"></param>
/// <param name="tipText"></param>
/// <param name="timeout"></param>
/// <param name="tipIcon"></param>
/// <returns></returns>
public static NotifyIcon ExAddNotifyIcon(this Form form, string tipText = "程式最小化至後台運行,點擊圖標顯示程式", int timeout = 3000, ToolTipIcon tipIcon = ToolTipIcon.Info)
{
NotifyIcon notifyIcon = new NotifyIcon();
notifyIcon.Icon = form.Icon;
notifyIcon.Visible = true;
notifyIcon.Text = form.Text;
notifyIcon.BalloonTipText = form.Text;
notifyIcon.MouseClick += (sender, args) =>
{
if (args.Button == MouseButtons.Left)
{
if (!form.Visible)
{
form.Show();
form.WindowState = FormWindowState.Normal;
form.TopMost = true;
form.TopMost = false;
}
else
{
form.WindowState = FormWindowState.Minimized;
form.Hide();
}
}
};
notifyIcon.ContextMenu = new ContextMenu(new MenuItem[]
{
new MenuItem("開機啟動", (sender, args) => { ((MenuItem) sender).Checked = form.ExSwitchRunOnSystemStart(); })
{
Checked = form.ExIsRunOnSystemStart()
},
new MenuItem("退出程式", (sender, args) => { form.Close(); }),
});
form.SizeChanged += (sender, args) =>
{
if (form.WindowState == FormWindowState.Minimized)
{
form.Hide();
notifyIcon.ShowBalloonTip(timeout, form.Text, tipText, tipIcon);
}
};
form.FormClosed += (sender, args) => { notifyIcon.Dispose(); };
return notifyIcon;
}
聲明