2013-04-22 87 views
6

我的應用程序是聊天,而我認爲,如果有人需要快速隱藏它,但並不想關閉它,我想出了這個:最小化到托盤

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 
} 

但是,而不是去到任務欄,我希望它出現在托盤(不彈出),只是應用程序圖標,當有人點擊它,它需要設置這個

this.WindowState = FormWindowState.Normal; 

這是可能的,怎麼樣?

此外,通過系統托盤我指的是一個在右下角,旁邊的時間

我仍然不能得到這個工作,沒有什麼,如果我做你們說的話會出現在通知欄( btw:這是最小化的完整代碼)

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 


} 

private void Form_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
    { 
     this.Hide(); 
    } 


} 

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

爲什麼不能正常工作?

+1

有沒有這樣的事,作爲一個 「系統托盤」。它被稱爲「通知區域」。這應該會幫助你找到實現這個的正確組件,即'NotifyIcon'。 – 2013-04-22 06:40:24

回答

7

處理窗體的Resize事件。在此處理程序中,您將覆蓋Resize事件的基本功能 ,以使表單最小化爲 系統托盤,而不是任務欄。這可以通過執行 在窗體的Resize事件處理程序如下進行:窗體的WindowState屬性

  1. 檢查是否設置爲FormWindowState.Minimized。如果是,隱藏表單,啓用NotifyIcon對象,並顯示顯示一些信息的氣球提示。
  2. 一旦WindowState變爲FormWindowState.Normal,通過將其Visible屬性設置爲false來禁用NotifyIcon對象。
  3. 現在,您希望窗口在您雙擊任務欄中的NotifyIcon對象時重新出現。爲此,請處理NotifyIcon的MouseDoubleClick事件。在這裏,您使用Show()方法顯示錶單。

在窗體調整大小事件,做檢查那裏隱藏表單

private void Form_Resize(object sender, EventArgs e) 
    { 
     if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 
    } 

然後在任務欄圖標點擊剛恢復它的時候。

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

參見:
How do I minimize a WinForms application to the notification area?
minimize app to system tray

+0

SO應該有一個選項來標記重複的答案! http://stackoverflow.com/a/6317078/762730 – Sandeep 2013-04-22 06:31:59

+0

@Sandeep:他想隱藏彈出窗口也不完全相同的問題,否則我總是樂意做這個工作,而不是在這裏寫作..非常感謝您的建議。 – 2013-04-22 06:33:58

+0

好的,我一定是錯過了一些東西,我不知道它是什麼,所以如果你能爲我完全拼出來,因爲我很愚蠢,我輸入的完整代碼是什麼,我也想讓應用程序到通知酒吧先,我不希望它有一個彈出窗口,或隱藏彈出 – Connor 2013-04-22 07:00:36

5

使用下面的代碼:

if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 

當最小的形式,簡單地將其隱藏。 您必須在Form_Resize事件中實現上述代碼。

然後在單擊任務欄圖標只是恢復其狀態如下:

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

您將需要使用notifyIcon_Click事件用於此目的。

希望它有幫助。

相關問題