2013-12-09 116 views
1

當我將主窗口的可見性設置爲隱藏時,任務欄中沒有顯示任何圖標,因此我無法控制窗口再次顯示。即使隱藏了窗口,我也希望應用程序的圖標可見,並在單擊任務欄中的按鈕時顯示窗口。 (如最小化行爲)
我怎樣才能實現在C#中使用WPF和.Net 4.0?
編輯:我的意思是任務欄中的圖標(通常在水平任務欄的左側和中間)而不是系統托盤中的notifyicon。在任務欄中顯示隱藏窗口的圖標

+0

其中任何一種都可能有所幫助:http://social.msdn.microsoft.com/Forums/vstudio/en-US/01b6f20c-d4fb-4956-a3f6-d5e5d91bd239/wpf-menu-for-system-tray-icon ?forum = wpf或http://social.msdn.microsoft.com/Forums/vstudio/en-US/0913ae1a-7efc-4d7f-a7f7-58f112c69f66/c-application-system-tray-icon –

+0

@SepehrM,有你嗎?只考慮使用'this.WindowState = WindowState.Minimized;'或者你真的在問托盤圖標嗎? – Yuriy

+0

@drew_w,我的意思是任務欄圖標,而不是系統托盤中的notifyicon。 – SepehrM

回答

2

因此,基於「註釋」部分,您要做的是最小化或隱藏窗口,但仍顯示窗口打開的一些窗口或對話框。首先,如果你想保持你的窗口在任務欄,你應該儘量減少:

this.WindowState = WindowState.Minimized 

這可以從窗體中的任何地方調用。正如你所提到的,雖然,這將會將 關閉 隱藏將此窗口設置爲父級的任何對話。那麼關鍵是不要使用這個窗口作爲父項。讓我們說你的對話從形式繼承。你想用:

newWindow.Show(); 

我猜,你在呼喚「的ShowDialog」,它關係窗口狀態父窗口的狀態。嘗試一下,希望它會有所幫助!

編輯

還要說明一點:同樣是消息框的實際情況。但要控制父窗體的方法是用MessageBox.Show()調用的第一個參數。如果您傳入一個表單作爲第一個參數,那麼這將是父級,否則父級將不會被設置。

+0

謝謝,但實際上除了對話框之外,我在主窗口中有AvalonDock的對接管理器。當用戶最小化窗口時,所有浮動面板都被隱藏起來。所以我隱藏了窗口,而不是實際上最小化它,以防止這些浮動應用程序隱藏。有沒有比隱藏窗口更好的方法? – SepehrM

+0

查看CodePlex上的AvalonDock代碼,它看起來像「FloatingWindow」至少從Window繼承。我的猜測是,如果你看看這些選項或者是否願意進入AvalonDock代碼,你會找到一種方法來最小化主窗口,但仍然顯示面板(現在可能是他們自己的窗口)。我上面提到的同樣的原則仍然適用。祝你好運! –

+0

雖然有多個與此問題相關的補丁,但它們都不適合我。我仍然會研究它,看看我能否想出一個解決方案。所以沒有辦法直接控制(顯示/隱藏)任務欄圖標?我知道這篇文章,但找不到任何有用的東西:http://msdn.microsoft.com/en-us/library/ff699128.aspx – SepehrM

相關問題