diff --git a/src/Ookii.Dialogs.WinForms/VistaFileDialog.cs b/src/Ookii.Dialogs.WinForms/VistaFileDialog.cs index ec4bdcc..24064ef 100644 --- a/src/Ookii.Dialogs.WinForms/VistaFileDialog.cs +++ b/src/Ookii.Dialogs.WinForms/VistaFileDialog.cs @@ -657,17 +657,13 @@ internal virtual void SetDialogProperties(Ookii.Dialogs.WinForms.Interop.IFileDi // Set the default file name if( !(_fileNames == null || _fileNames.Length == 0 || string.IsNullOrEmpty(_fileNames[0])) ) { - string parent = Path.GetDirectoryName(_fileNames[0]); - if( parent == null || !Directory.Exists(parent) ) - { - dialog.SetFileName(_fileNames[0]); - } - else - { - string folder = Path.GetFileName(_fileNames[0]); - dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent)); - dialog.SetFileName(folder); - } + dialog.SetFileName(_fileNames[0]); + } + + // Set the default directory + if( Directory.Exists(_initialDirectory) ) + { + dialog.SetFolder(NativeMethods.CreateItemFromParsingName(_initialDirectory)); } // Set the filter @@ -692,13 +688,6 @@ internal virtual void SetDialogProperties(Ookii.Dialogs.WinForms.Interop.IFileDi dialog.SetDefaultExtension(_defaultExt); } - // Initial directory - if( !string.IsNullOrEmpty(_initialDirectory) ) - { - Interop.IShellItem item = NativeMethods.CreateItemFromParsingName(_initialDirectory); - dialog.SetDefaultFolder(item); - } - // ShowHelp if( _showHelp ) { diff --git a/src/Ookii.Dialogs.WinForms/VistaFolderBrowserDialog.cs b/src/Ookii.Dialogs.WinForms/VistaFolderBrowserDialog.cs index 38a928a..8af4f0f 100644 --- a/src/Ookii.Dialogs.WinForms/VistaFolderBrowserDialog.cs +++ b/src/Ookii.Dialogs.WinForms/VistaFolderBrowserDialog.cs @@ -48,8 +48,17 @@ public sealed class VistaFolderBrowserDialog : CommonDialog /// Creates a new instance of the class. /// public VistaFolderBrowserDialog() + : this(false) { - if( !IsVistaFolderDialogSupported ) + } + + /// + /// Creates a new instance of class. + /// + /// When , the old style common file dialog will always be used even if the OS supports the Vista style. + public VistaFolderBrowserDialog(bool forceDownlevel) + { + if (forceDownlevel || !IsVistaFolderDialogSupported) _downlevelDialog = new FolderBrowserDialog(); else Reset(); @@ -278,22 +287,13 @@ private void SetDialogProperties(Ookii.Dialogs.WinForms.Interop.IFileDialog dial } } - dialog.SetOptions(NativeMethods.FOS.FOS_PICKFOLDERS | NativeMethods.FOS.FOS_FORCEFILESYSTEM | NativeMethods.FOS.FOS_FILEMUSTEXIST); - - if( !string.IsNullOrEmpty(_selectedPath) ) + // Set the default directory + if (Directory.Exists(_selectedPath)) { - string parent = Path.GetDirectoryName(_selectedPath); - if( parent == null || !Directory.Exists(parent) ) - { - dialog.SetFileName(_selectedPath); - } - else - { - string folder = Path.GetFileName(_selectedPath); - dialog.SetFolder(NativeMethods.CreateItemFromParsingName(parent)); - dialog.SetFileName(folder); - } + dialog.SetFolder(NativeMethods.CreateItemFromParsingName(_selectedPath)); } + + dialog.SetOptions(NativeMethods.FOS.FOS_PICKFOLDERS | NativeMethods.FOS.FOS_FORCEFILESYSTEM | NativeMethods.FOS.FOS_FILEMUSTEXIST); } private void GetResult(Ookii.Dialogs.WinForms.Interop.IFileDialog dialog)