为什么无法在Window构造函数中显示两次FolderBrowserDialog?

时间:2016-08-15 14:05:54

标签: c# wpf winforms folderbrowserdialog

出于好奇,我想知道为什么我不能在FolderBrowserDialog的构造函数中一个接一个地显示Window的两个不同实例,但可以在Window中执行此操作'Loaded事件。

  • 示例1 只显示第一个对话框(fbd1),但不会显示下一个对话框。
  • 示例2 显示了两个对话框。

示例1:

public partial class MainWindow : Window {

    public MainWindow() {
        InitializeComponent();

        using (var fbd1 = new FolderBrowserDialog()) {
            fbd1.ShowDialog();
        }
        using (var fbd2 = new FolderBrowserDialog()) {
            fbd2.ShowDialog();
        }
    }
}

示例2:

public partial class MainWindow : Window {

    public MainWindow() {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e) {
        using (var fbd1 = new FolderBrowserDialog()) {
            fbd1.ShowDialog();
        }
        using (var fbd2 = new FolderBrowserDialog()) {
            fbd2.ShowDialog();
        }
    }
}

顺便说一句,我也用WinForms测试过,这几乎是一样的。

它不适用于Form的{​​{1}}事件Form的构造函数,但适用于{{1}事件。

1 个答案:

答案 0 :(得分:1)

正如 Reza Aghaei 在第二次评论中所说:

  

当你关闭第一个对话框时,会出现第二个对话框,但是从那时起   您的Form目前不可见,在任务栏中不可见,   它不会激活第二个对话框,而它会在其他对话框后面打开   视窗。只需按Alt + Tab即可查看打开的窗口,您将看到   第二个对话也是。但是当您的表单可见时(例如运行时)   显示的代码)你不会有这个问题。

这是我好奇心的答案。