Dialog

De Banane Atomic
Aller à la navigationAller à la recherche

OpenFileDialog

Assembly PresentationFramework.dll, namespace Microsoft.Win32

Csharp.svg
var ofd = new OpenFileDialog()
{
    Multiselect = true,
    RestoreDirectory = true,
    Filter = "Excel documents|*.xls;*.xlsx|All Files|*.*"
};

if (ofd.ShowDialog() == true) { var selectedFile = ofd.FileName; }
Si InitialDirectory n'est pas renseigné, c'est le répertoire du dernier fichier ouvert qui est utilisé.

FolderBrowserDialog

Assembly System.Windows.Forms.dll, namespace System.Windows.Forms

Csharp.svg
var fbd = new FolderBrowserDialog()
{
    Description = "Select a directory.",
    ShowNewFolderButton = false,
    // il faut choisir entre RootFolder etSelectedPath
    RootFolder = Environment.SpecialFolder.Personal,
    SelectedPath = @"chemin vers un dossier"
};

if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    var path = fbd.SelectedPath;
}
Le dernier dossier utilisé n'est pas sauvegardé.
Utiliser les Settings pour avoir ce comportement.

CommonOpenFileDialog - Windows API Code Pack

Installer via Nuget le Windows API Code Pack Shell.

Csharp.svg
var dlg = new CommonOpenFileDialog();
dlg.Title = "My Title";
dlg.IsFolderPicker = true;

// force un chemin
dlg.InitialDirectory = @"C:\";
// Utilise le précédent chemin ouvert, s'il n'y en a pas utilise DefaultDirectory
dlg.DefaultDirectory = @"C:\Mon\Chemin";

if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
{
    var folder = dlg.FileName;
}
Ne marche peut être pas sous XP. Nécessite .NET 4.0 ?
Ne semble plus être maintenu par Microsoft.

Ookii.Dialogs

VistaFolderBrowserDialog

Csharp.svg
var fbd = new VistaFolderBrowserDialog()
{
    SelectedPath = @"C:\Chemin",
    Description = "Description",
    ShowNewFolderButton = false
}

if (fbd.ShowDialog(this) == true && Directory.Exists(fbd.SelectedPath))
{ }

Windows API Code Pack

Assemlies Microsoft.WindowsAPICodePack.dll et Microsoft.WindowsAPICodePack.Shell.dll

Csharp.svg
var dlg = new CommonOpenFileDialog();
dlg.Title = "My Title";
dlg.IsFolderPicker = true;
dlg.InitialDirectory = "D:\\";

dlg.AddToMostRecentlyUsedList = false;
dlg.AllowNonFileSystemItems = false;
dlg.DefaultDirectory = "D:\\";
dlg.EnsureFileExists = true;
dlg.EnsurePathExists = true;
dlg.EnsureReadOnly = false;
dlg.EnsureValidNames = true;
dlg.Multiselect = false;
dlg.ShowPlacesList = true;

if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
{
    var folder = dlg.FileName;
}
Ne semble plus être maintenu par Microsoft.