WPF中的SaveFileDialog错误

时间:2012-03-26 15:32:46

标签: c# .net wpf openfiledialog savefiledialog

我正在使用Microsoft.Win32.SaveFileDialog类来保存我的文件。当我保存文件并最小化我的应用程序时,我无法恢复它。它仅在使用Microsoft.Win32.SaveFileDialog后才会发生。这是代码:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = String.Format("{0} {1} {2}", ev["b"], ev["a"], ev["c"]);
dlg.DefaultExt = ".csv";
dlg.Filter = "Supported format (.csv)|*.csv";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
    string s = dlg.FileName;
    //other code
}

文件保存成功,但我不知道如何解决最小化问题。有人知道它会是什么吗?

2 个答案:

答案 0 :(得分:3)

当您显示没有父窗口的对话框时,WPF会出现各种奇怪的模态问题。我没有直接使用SaveFileDialog看到这个,但我看到了与其他对话框类似的行为。尝试使用.ShowDialog()的重载,在其中传入父窗口。

答案 1 :(得分:1)

我在WPF和Win32 SaveFileDialog / OpenFileDialog中遇到了一个奇怪的模态问题。

会发生什么:

  • 在使用ShowDialog()
  • 打开OpenFileDialog时,可以完全忽略模式状态/完全丢失主窗口

什么时候发生:

  • 在OpenFileDialog打开之前有一个任务正在运行
  • 调试器在运行任务之前会进入断点

只需使用按钮点击事件创建一个简单的WPF应用程序:

    private void Button_Click(object sender, RoutedEventArgs e)
    { // <-- Breakpoint sits here

        Task.Run(() => {}).Wait();

        new Microsoft.Win32.OpenFileDialog().ShowDialog();
    }

使用重载的ShowDialog(Window owner)函数解决了这个问题。