Search code examples
c#wpfdialogsavefiledialogdialogresult

DialogResult.OK on SaveFileDialog not work


I try, when I press save in SaveFileDialog I do something. I trying fix but always something wrong.

SaveFileDialog dlg2 = new SaveFileDialog();
dlg2.Filter = "xml | *.xml";
dlg2.DefaultExt = "xml";
dlg2.ShowDialog();
if (dlg2.ShowDialog() == DialogResult.OK)
{....}

But I have error on OK - which say:

Error: 'System.Nullable' does not contain a definition for 'OK' and no extension method 'OK' accepting a first argument of type 'System.Nullable' could be found (are you missing a using directive or an assembly reference?)

I try fix with this code:

DialogResult result = dlg2.ShowDialog(); //here is error again
if (result == DialogResult.OK)
                {....}

Now error is on DialogResult say: 'System.Windows.Window.DialogResult' is a 'property' but is used like a 'type'


Solution

  • I assume that you are referring to WPF not Windows Form Here is example of using SaveFileDialog

    //configure save file dialog box
    Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
    dlg.FileName = "Document"; //default file name
    dlg.DefaultExt = ".xml"; //default file extension
    dlg.Filter = "XML documents (.xml)|*.xml"; //filter files by extension
    
    // Show save file dialog box
    Nullable<bool> result = dlg.ShowDialog();
    
    // Process save file dialog box results
    if (result == true)
    {
       // Save document
       string filename = dlg.FileName;
    }
    

    Other Example:

    In WPF you have to handle conflict between DialogResult Enumeration and Window.DialogResult Property

    Try using fully qualified name to refer the enumeration:

    System.Windows.Forms.DialogResult result = dlg2.ShowDialog();
    
    if (result == DialogResult.OK)
                {....}