2015-04-17 83 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

最后,请务必关闭您的显示通话后立即打开窗体,以便它不创建僵尸形式。

相关问题