2013-11-27 25 views
0

我打算使用此方法來顯示通知圖標,以便它可以在主窗體和子窗體(從另一個SO post發現)使用兩種形式之間的NotifyIcon在C#

public partial class MainForm : Form { 
    public MainForm() { 
     InitializeComponent(); 
     notifier = this.notifyIcon1; 
     this.FormClosed += delegate { notifier = null; }; 
    } 

    public static NotifyIcon Notifier { get { return notifier; } } 

    private static NotifyIcon notifier; 
} 
之間
  1. 訪問有必要添加FormClosed委託?我會認爲,當形式的其他一切都被破壞和釋放?

編輯:澄清 - 我可以確認使用沒有上述委託的代碼時,當我關閉表單時系統托盤圖標確實消失,我也使用VS UI從工具箱中拖放NotifyIcon所以設計者正在爲我處理初始化,我使用上面的構造函數來訪問它。

回答

1

如果通知圖標在邏輯上與此窗體實例綁定,那麼您不應該將它作爲靜態字段。將其標記爲靜態是爲了明確說明它是而不是綁定到一個實例,而是在所有實例之間共享。

我會認爲,當形式一切都被破壞和釋放?

如果它是實例數據,但由於它是靜態的,因此不綁定到實例,當表格消失時它不會被清除。

當然,如果這是主要形式(而不是用詞不當),那麼整個應用程序將在表單關閉時結束,這將清理所有內容,無論靜態與否。

0

您需要設置

nutifier.Visible = false; 
notifier = null; 

上收盤。如果沒有,圖標停留在應用程序關閉後

+0

我測試過,當主窗體關閉托盤圖標的時候,它會消失 – Kairan