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)