讓WindowsForm縮小到系統匣
如何讓windowsForm能像MSN一樣縮小後會跑到右下方的系統匣內,
只要利用NotifyIcon就可以做到相同的功能,MSDN NotifyIcon元件說明
首先先開啟一個windowsForm專案,在工具列將NotifyIcon拉到windowsForm上。
接著先為NotifyIcon指定Icon和Text,就是在系統匣會出現的小圖和滑鼠移過去時出現的文字。
執行結果
如果要在視窗縮小時,只顯示在系統匣顯示,
反之則變成只顯示在工作列,就必須要在Form的SizeChanged事件做控制:
將NotifyIcon 的Visible預設為false
private void Form1_SizeChanged(object sender, EventArgs e)
{
bool isMin = this.WindowState == FormWindowState.Minimized;//視窗是否為最小化
this.notifyIcon1.Visible = isMin;//是否顯示在系統匣
this.ShowInTaskbar = !isMin;//是否顯示在工作列
if (isMin)
this.Hide();//隱藏主視窗
}
這樣如果把視窗縮小後,會沒辦法再叫回來,但可以利用NotifyIcon的MouseDoubleClick事件,
讓滑鼠左鍵點選系統匣圖示兩下就恢復正常視窗。
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}
}
接著還可以為NotifyIcon加ContextMenuStrip,從工具列中拉一個ContextMenuStrip到設計視窗,並設計一些選項進去,
並將NotifyIcon的ContextMenuStrip設定成剛剛拉出來的ContextMenuStrip。
執行結果~
NotifyIcon還可以加上氣球提示效果,假設在視窗縮小的時候可跳出一個氣球提示告知使用者~
Icon
在之前隱藏主視窗的地方再加一行CODE~
if (isMin)
{
this.Hide();//隱藏主視窗
this.notifyIcon1.ShowBalloonTip(2000);//氣球提示2秒鐘
}
執行結果~
嗯…杯具完了~~