2015年3月12日 星期四

[C#] 如何將程式縮小到右下角

當我們想要將程式縮小到右下角(minimized to tray),類似常駐程式一般,
此時我們可利用工具箱裡的"NotifyIcon"來幫忙,
縮小後,我們可能還需要將程式還原,所以我們還需要用到"ContextMenuStrip"這個工具,

首先,拉一個 "ContextMenuStrip"工具到你的視窗,在裡面我們可以新增幾個menu items,
這些items就是當程式縮小到右小角後,在程式的icon上按滑鼠右鍵時會跳出的選項,
假設我們增加了"Open"和"Quit"二個選項,


再來,拉一個"NotifyIcon"工具到你的視窗,開始編輯它的屬性,
其中,Icon就是縮小時,使用者會看到的圖示,
Text就是使用者滑鼠移到圖示上面時,會跳出的文字,
在ContextMenu上點一下,即可選擇我們剛剛加入的ContextMenuStrip工具名稱,

接下來就是程式部份:
private void frmMain_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.notifyIcon1.Visible = true;
                this.Hide();
            }
            else
            {
                this.notifyIcon1.Visible = false;
            } 
        }

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal; 
        }

        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {            
            this.Close();            
        }
frmMain_Resize()是主視窗Resize這個Event的處理函數,
openToolStripMenuItem_Click()是ContextMenuStrip1的"Open"選項Click Event的處理函數, quitToolStripMenuItem_Click()是ContextMenuStrip1的"Quit"選項Click Event的處理函數, 有時候,我們發現有些程式你把它關掉時,它不會直接關掉, 會告訴你它將縮小到右下角,怎麼做到這樣的效果呢?
 private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {            
            DialogResult result;
            result = MessageBox.Show("Yes to minimize, No to quit directly, Cancel to return", "Minimize to tray?", MessageBoxButtons.YesNoCancel);
            if (result == DialogResult.Yes)
            {
                this.WindowState = FormWindowState.Minimized;
                e.Cancel = true;
            }            
            else if (result == DialogResult.Cancel)
            {                
                e.Cancel = true;
            }
            
        }
frmMain_FormClosing()是主視窗FormClosing這個Event的處理函數, e.Cancel = true;表示Cancel Closing這個動作

沒有留言:

張貼留言