这是answered here for Windows.Forms,但将以下内容添加到您的类中,您可以让它在WPF中工作。 您必须添加对System.Windows.Forms & System.Drawing的引用,以便上面的类工作并执行以下操作。
public partial class YourWPFWindow : Window, System.Windows.Forms.IWin32Window
{
public IntPtr Handle
{
get { return new WindowInteropHelper(this).Handle; }
}
}
6条答案
按热度按时间j5fpnvbx1#
下面是在使用WPF样式消息框的另一个线程中发布的MessageBoxEx帮助器类的一个版本(注意,您仍然需要引用System.Drawing):
kt06eoxx2#
这是answered here for Windows.Forms,但将以下内容添加到您的类中,您可以让它在WPF中工作。
您必须添加对
System.Windows.Forms
&System.Drawing
的引用,以便上面的类工作并执行以下操作。然后,您可以使用以下命令调用MessageBoxEx:
它应该出现在你的窗口中间。
t9eec4r03#
另一种方法是创建自己的消息框窗口,并将窗口的启动位置设置为centerowner。优点是你可以很容易地有你的风格和定制,没有挂钩。
zzoitvuj4#
如果您愿意使用外部库,一个选择是Xceed WPF Toolkit,它有一个MessageBox,可以正确居中。它也与WPF非常一致,例如。它可以从XAML样式化。
https://github.com/xceedsoftware/wpftoolkit/wiki/MessageBox
用法
MessageBox非常接近地模仿System.Windows.MessageBox的行为。您可以使用类似的语法来创建和显示消息框。
父窗口居中显示为自动。
fbcarpbf5#
除了Framnk's answer
此部分在多个屏幕上不起作用
这里有一个快速解决方法:
tf7tbtn26#
如果您的应用有多个窗口,您可能需要使用
Application.Current.MainWindow
: