2015-04-17 56 views
3

是否有可能到主屏幕上顯示MessageBox,並不一定是在應用程序運行在屏幕上?如何在主屏幕上執行MessageBox.Show?

+0

的WinForms(見[這](https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.primaryscreen(V = vs.110)的.aspx)和你的下一個問題be [this](http://stackoverflow.com/q/5289148/1997232))? WPF? – Sinatr

+3

我不明白你的問題。你有多個顯示器? –

回答

5

你可以嘗試MessageBoxOptions.DefaultDesktopOnly

MessageBox.Show("Hello World", "Caption", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); 

工作得很好,對我來說並沒有呈現與Windows的默認視覺風格的消息框。

+0

這可能是最簡單的方法,但它會導致在沒有視覺樣式的情況下顯示消息框。 https://msdn.microsoft.com/en-us/library/system.windows.forms.messageboxoptions(v=vs.110).aspx –

+0

嗯,你說得對。沒有注意到。 – Gene

+0

我剛試過。它需要禁止使用DefaultDesktopOnly所有者(MessageBox.Show(這一點, 「blahblah」,......,MessageBoxOptions.DefaultDesktopOnly) - > MessageBox.Show( 「blahblah」,......,MessageBoxOptions.DefaultDesktopOnly)),然後它會顯示右桌面(是的,多個顯示器)。它工作正常(最高級的parrent現在沒有所有者(this),謝謝 – SilentCry

1

沒有一個簡單的方法來做到這一點,但這裏是一個辦法:

首先創建一個表單或窗口,這是非常小的(1×1)什麼的。確保此表單在主顯示屏上打開。您可以使用Screen對象獲取主要顯示尺寸。確保設置表單的屬性,使其不顯示在任務欄中。

然後調用Messagebox.Show並在Form.Handle傳遞給顯示方法。這告訴系統在該對象前面顯示消息框。 https://msdn.microsoft.com/en-us/library/cked7698(v=vs.110).aspx

最後,請務必關閉您的顯示通話後立即打開窗體,以便它不創建殭屍形式。