首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >System.Windows.MessageBox不会在用户输入之前等待用户输入!

System.Windows.MessageBox不会在用户输入之前等待用户输入!
EN

Stack Overflow用户
提问于 2011-05-08 02:36:47
回答 7查看 8.9K关注 0票数 17

...and这不能解释为什么。T-T

在我的Application_Startup事件处理程序中,我有类似如下的代码:

private void Application_Startup(object sender, StartupEventArgs e)
{
    string errorMessage;

    if(CheckStartUpConditions(out errorMessage))
    {
        (new MainWindow()).Show();
    }
    else
    {
        MessageBox.Show(errorMessage, "Application Startup", 
            MessageBoxButton.OK, MessageBoxImage.Error);

        Shutdown();
    }
}

private bool CheckStartUpConditions(out string errorMessage)
{
    errorMessage = string.Empty;  

    if(...)
        errorMessage += "Please login to xxx. ";

    if(...)
        errorMessage += "Please install xxx.";

    if(string.IsNullOrEmpty(errorMessage))
        return true;
    else
        return false;
}

消息框会短暂出现一秒钟,然后会发出“砰!”的声音。它不会等待我点击“确定”或点击"X“按钮。我真的很难理解为什么会发生这种情况,所以任何帮助都会非常感谢。

我试着注释掉对Shutdown的调用,只是为了好玩,它仍然以同样的方式运行。

另外,这个应用程序也有一个SplashScreen,所以我不知道这是否会影响它。

编辑:如果有帮助,我添加了更多代码。消息框显示正确的错误消息。只是不会停留足够长的时间让用户阅读它。>:(

编辑第二部分:好的……我想我找到罪魁祸首了。:(我将用作启动的图像上的构建操作从SplashScreen更改为None,消息框现在将保留并等待用户输入。我不明白为什么SplashScreen要搞乱MessageBox。>:(

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-08 03:50:39

尝试使用接受System.Windows.Window参数并传递Null值的重载来使MessageBox成为应用程序的顶级窗口,该窗口独立于可能存在的所有其他窗口。我猜你的MessageBox是由闪屏表单拥有的。当闪屏关闭时,框架将关闭MessageBox。因此,让你的MessageBox变得无主应该能起到作用。

票数 7
EN

Stack Overflow用户

发布于 2016-03-17 10:43:09

消息框立即消失,因为它没有所有者。如果指定选项MessageBoxOptions.DefaultDesktopOnly,桌面将被指定为所有者,并且消息框将在没有主窗口的应用程序上正常工作。

MessageBox.Show(
    "Message", 
    "Title",
    MessageBoxButton.YesNoCancel, 
    MessageBoxImage.Question, 
    MessageBoxResult.Cancel,
    MessageBoxOptions.DefaultDesktopOnly);
票数 25
EN

Stack Overflow用户

发布于 2012-08-24 00:03:38

根据Alexey Ivanov的建议,我成功地使用了一个新窗口作为父窗口

System.Windows.Forms.MessageBox.Show(new System.Windows.Forms.NativeWindow(), errorMessage, "Application Startup", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5923188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档