Timur Mustafaev
Timur Mustafaev

Reputation: 4929

SaveFileDialog bug in WPF

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?

Upvotes: 2

Views: 2246

Answers (2)

Lumo
Lumo

Reputation: 687

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.

Upvotes: 1

Dana Cartwright
Dana Cartwright

Reputation: 1576

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.

Upvotes: 3

Related Questions