我有一个消息框,当用户无法加载时弹出(在这种情况下,因为他没有仓库),加载时会出现一个显示数据正在加载的启动画面。 我尝试将TopMost设置为true,但是因为spalshscreen不是父级所以它不起作用,所以我尝试将TopLevel设置为true但是它没有做到这一点。
所以我试过了:
MessageBox.Show(Splashscreen.LoadingScreen.ActiveForm, e.Message, "No warehouses", MessageBoxButtons.OK, MessageBoxIcon.Error);
但这是交叉线程所以我得到了: InvalidOperationException 那么还有另一种方法可以将消息框设置在顶部吗?
答案 0 :(得分:7)
尝试此操作,它会在当前打开的每个窗口的顶部显示您的MessageBox。
MessageBox.Show(this,
"Your text",
"Settings Needed",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1,
(MessageBoxOptions)0x40000); // this is MB_TOPMOST flag
这会将消息框保留在每个窗口的顶部,因为我们将MB_TOPMOST
值传递给MessageBoxOptions参数。您可以访问this了解详情。
答案 1 :(得分:1)
我遇到了类似的问题 - 我的MessageBox隐藏在SplashScreen之后。这里没有使用“this”,也没有“new Form”适用于我的WPF应用程序。但是,施工
Error:(10, 21) inferred type arguments [Nothing,FooJava.SomeComplicatedElement] do not conform to method method's type parameter bounds [PayloadT <: FooJava.Payload[PayloadT],ObjectT <: FooJava.ComplicatedElement[PayloadT,ObjectT]]
println(FooJava.method(new SomeComplicatedElement(new SomePayload())))
使用 MessageBoxOptions.ServiceNotification 会有所帮助,将MessageBox置于SplashScreen之上。