2011-03-06 46 views
0

我有一個NotifyIcon出現在系統托盤中,我想在第一次應用程序閒置時顯示氣球提示(如此處所示:C# execute code after application.run()),但Idle事件發生在圖標出現在系統托盤中,導致氣球不出現。在我致電ShowBalloonTip之前,如何強制NotifyIcon出現?Force NotifyIcon出現在系統托盤

+0

作爲一個方面說明,我在C#中使用NotifyIcons時遇到了一些問題 - 我遇到的其中一個「不一致」是通過強制Visible屬性爲false,然後爲true來解決,即「刷新」系統托盤 – Simon 2011-03-06 23:48:31

+0

謝謝,不幸設置它看不見然後可見並沒有幫助。 – Drew 2011-03-07 00:11:37

+0

這是一種奇怪的請求。如果用戶遠離鍵盤,Windows將不會顯示氣球 - 並且會延遲顯示,直到他們回來(「以便最大程度地縮短氣球在用戶面前獲得的時間量」)。如果應用程序空閒,那麼幾乎根據定義,用戶不在那裏,這正是您不想顯示氣球的時間(這是好的,因爲Explorer無法顯示它)。但我會同意ChrisF的立場。 – 2011-03-07 00:20:03

回答

1

這是一個相當基本的比賽,這是照顧該圖標的另一個過程。 Windows資源管理器。你無法分辨何時處理事情。設置Visible = true後調用Thread.Sleep(500)應該顯着提高賠率。

不要考慮你的程序啓動時顯示的圖標。

+0

那很不幸,我不得不使用Thread.Sleep()來處理競爭條件。 – Drew 2011-03-07 02:27:37

0

爲什麼不設置空閒標誌,然後檢查標誌的狀態的通知圖標設置爲可見後:

// Application has become idle 
firstTimeIdle = true; 

然後:

// Show notify icon 
notifyIcon.Visible = true; 
if (firstTimeIdle && !shownBalloon) 
{ 
    notifyIcon.ShowBalloonTip(timeout, title, text, icon); 
    shownBalloon = true; 
} 
+0

這不完全是我的問題,我已經設置好它只顯示一次氣球,但是如果NotifyIcon不可見,氣球將不會出現。我需要一種方法來強制NotifyIcon出現。 – Drew 2011-03-07 00:09:58

+0

@德魯 - 啊。我認爲讓事件按照正確的順序發生只是一些問題。將'notifyIcon.Visible'設置爲'true'應該顯示出來。 – ChrisF 2011-03-07 00:12:37