在splashscreen顶部的消息框

时间:2014-06-03 08:18:39

标签: c#

我有一个消息框,当用户无法加载时弹出(在这种情况下,因为他没有仓库),加载时会出现一个显示数据正在加载的启动画面。 我尝试将TopMost设置为true,但是因为spalshscreen不是父级所以它不起作用,所以我尝试将TopLevel设置为true但是它没有做到这一点。

所以我试过了:

MessageBox.Show(Splashscreen.LoadingScreen.ActiveForm, e.Message, "No warehouses", MessageBoxButtons.OK, MessageBoxIcon.Error);

但这是交叉线程所以我得到了: InvalidOperationException 那么还有另一种方法可以将消息框设置在顶部吗?

2 个答案:

答案 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之上。