如何在WPF中将MessageBox窗口保留在前台

时间:2012-11-25 15:48:34

标签: c# wpf messagebox folderbrowserdialog

我需要显示一个文件夹对话框,以便用户可以在我的应用程序运行之前选择一个路径。我有一切正常,但我似乎无法将错误MessageBox保留在前台。如果用户选择了错误的路径,则会弹出一个消息框,但它将保留在桌面上任何打开的窗口后面的背景中。

我是WPF的新手,使用此应用程序的winforms版本我可以指定fdb.ShowDialog(this),它会将错误消息框保留在前台。但是对于WPF,消息框窗口始终位于所有其他打开的窗口之后。

关于如何解决这个问题的任何想法?谢谢。

    while (!found)
    {
        if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            if ((File.Exists(Path.Combine(fbd.SelectedPath, "user.exe"))))
                return fbd.SelectedPath;
            else                   
                System.Windows.Forms.MessageBox.Show("Cannot find user.exe in the selected path! Please try again.", "File Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

        }
    }

1 个答案:

答案 0 :(得分:1)

将代码移至Window_Loaded事件,而不是从构造函数中调用它 -

<Window Loaded="Window_Loaded"/>

代码背后 -

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // Your code here
}

因为,您的窗口尚未加载,因为代码执行尚未通过构造函数,同时会弹出错误消息。因此,一旦窗口加载,它将通过消息框。