2010-09-24 94 views
2

我使用C#在visual studio 2010中創建系統托盤應用程序。消失系統托盤圖標

當應用程序啓動時,我創建了我的線程和系統托盤圖標。無論何時我將鼠標移到圖標上,它都會消失(應用程序仍在運行),即使我單擊顯示所有隱藏圖標的按鈕,它也不會顯示。

但是,如果我不試圖將鼠標懸停在上面,那麼它將保留在系統托盤中。

任何想法或經驗?

在此先感謝


感謝您的答案傢伙。

呃,這是我之前修復過的,雖然對於那些也許好奇的人來說。

我最初沒有使用Windows窗體,這是發生問題的時候。但是,當我將我的應用程序設置爲一個窗體,並隱藏窗體,並不顯示它在任務欄中,它的工作。

+0

當鼠標懸停在圖標上時,您確定顯示圖標的過程仍在運行嗎? – 2010-09-24 15:42:28

回答

1

這意味着托盤圖標已被刪除。這通常發生在進程終止後,但托盤停留在那裏 - 這是一個Windows錯誤。

因此,出於某種原因,您的托盤圖標可能「崩潰」。

沒有看到您的代碼,將不可能進一步評論。

1

如果你正在創建圖標對象,並讓它超出範圍而沒有任何引用,那麼下一個垃圾收集就會調用它的析構函數,這會發生。

3

將此代碼粘貼到您的窗體類:

protected override void OnFormClosing(FormClosingEventArgs e) { 
     notifyIcon1.Visible = false; 
     base.OnFormClosing(e); 
    } 

這將確保該圖標將不會在托盤纏綿消失。現在在該代碼上設置一個斷點並找出表單關閉的原因。如果你不知道原因,請將堆棧跟蹤複製並粘貼到問題中。

0

當Windows資源管理器重新啓動時,窗口將清除通知區域中的所有圖標併發送廣播消息任務欄創建。必須使用該消息再次添加通知圖標。

您可以使用下面的代碼來聽事件:

UINT WM_TaskBarCreated = ::RegisterWindowMessage(L"TaskbarCreated"); 

和使用的WindowProc或了MessageHandler添加圖標回到區域信息通報。