SaveFileDialog bug in WPF

拜拜、爱过 提交于 2019-12-10 22:55:38

问题


I'm using Microsoft.Win32.SaveFileDialog class to save my files. When I saved file, and minimize my app, I can't restore it back. It happens only after when used Microsoft.Win32.SaveFileDialog. Here is code:

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
}

File saves successfully, but I don't know how to solve problem with minimizing. Does anybody knows what it could be?


回答1:


WPF has all kinds of weird modality issues when you show dialogs without parent windows. I haven't seen this directly with the SaveFileDialog, but I have seen similar behavior with other dialogs. Try using the overload of .ShowDialog() where you pass in the parent window.




回答2:


I encountered also a strange modality problem with WPF and the Win32 SaveFileDialog / OpenFileDialog.

What happens:

  • The modal state is violated / gets lost completely and the main window can be clicked while the OpenFileDialog is opened with ShowDialog()

When does it happen:

  • There was a task running before the OpenFileDialog opens
  • The debugger breaks into a breakpoint before running the task

Just create a simple WPF Application with a button click event:

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

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

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

Using the overloaded ShowDialog(Window owner) function solves this problem.



来源:https://stackoverflow.com/questions/9875056/savefiledialog-bug-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!