2017-10-16 66 views
1

我創建了我的托盤圖標System.Windows.Forms.NotifyIconC#清除關閉應用程序的托盤圖標

但是,應用程序關閉後。該圖標繼續留存,直到我手動將鼠標移到該圖標上。

當新實例運行時,如何防止延遲或清除所有舊的?

+0

出現這種情況,如果你當應用程序被關閉,不處理你的任務欄圖標。另一種情況是您的應用程序崩潰。但是在這種情況下,所有其他使用托盤圖標的應用程序也會發生,無論它們是否使用C#,C++或任何其他可生成Windows應用程序的語言編寫。 – Oliver

回答

5

我沒有重現您的問題,我正在運行Windows 10創作者更新。

但是我發現,當您關閉應用程序時,您可以DisposeNotifyIconDispose可以將您的圖標移出任務欄的托盤區域。

我想你可能已經意外退出了你的程序,那會導致你的問題。您應該檢查是否調用了System.Exit()或其他不安全的退出方法。

你可以看到下面的代碼就知道如何調用Dispose

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnClosed(EventArgs e) 
    { 
     base.OnClosed(e); 
     // Call Dispose to remove the icon out of notification area of Taskbar. 
     notifyIcon1.Dispose(); 
    } 
} 
+0

調試時,當我單擊停止按鈕時,應用程序終止而不調用任何回調。那是他們建立起來的時候。有什麼辦法可以阻止它呢? – John

+0

即使退出整個過程,Windows也不會處理顯示或隱藏的notifyicon。 Windows API Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA lpdata)是控制它的唯一方法。 – walterlv

相關問題