BetterFolderBrowser 1.0.0

BetterFolderBrowser is a .NET component library that was written to help developers provide a better folder-browsing and selection experience (with support for folder multi-selection) to users by employing a similar browser dialog as the standard 'OpenFileDialog' in place of the current 'FolderBrowserDialog' which only allows for single-folder selections with its tree-view display format. This provides a more streamlined viewing, modification, searching and selection experience using the standard Explorer dialog.

Install-Package BetterFolderBrowser -Version 1.0.0
dotnet add package BetterFolderBrowser --version 1.0.0
<PackageReference Include="BetterFolderBrowser" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BetterFolderBrowser --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

BetterFolderBrowser

BetterFolderBrowser is a .NET component library that was written to help developers provide a better folder-browsing and selection experience to users by employing a similar browser dialog as the standard OpenFileDialog in place of the current FolderBrowserDialog which only allows for single-folder selections with its tree-view display format. This allows for a much easier viewing, modification, searching and selection experience using the standard Windows Explorer dialog.

Features

  • Works with .NET 2.0 and above allowing for usability across most .NET applications.
  • Built as a component making it accessible in Design Mode.
  • Uses the same dialog model as the OpenFileDialog, making it super easy for users to view, search, select, and modify folders when opened.
  • Allows passing of literal paths as strings to the RootFolder property.
  • Allows multiple selection of folders in constrast to the standard WinForms FolderBrowserDialog which only allows for single-folder selections. One can then access the list of selected folders using the property SelectedPaths or its variant SelectedFolders property.
  • The dialog can be displayed either blocking the UI thread or not using the ShowDialog(IWin32Window) or ShowDialog() methods respectively.
  • Provides additional custom UITypeEditor variants for folder-selection within the Properties window. They include the SelectedPathEditor (for single folder selection) and SelectedPathsEditor (for multiple folder selection) for use in-place of the standard WinForms SelectedPathEditor. For usage of these editors, ensure you import the namespace WK.Libraries.BetterFolderBrowserNS.Editors.
    Here are two examples of properties implementing the given custom editors:
    // Allows selection of one folder.
    [Editor(typeof(SelectedPathEditor), 
    typeof(UITypeEditor))]
    public string MyFolderPath { get; set; }
    
    // Allows selection of many folders.
    [Editor(typeof(SelectedPathsEditor), 
    typeof(UITypeEditor))]
    public string[] MyFolderPaths { get; set; }

Usage

If you prefer working with the Designer, simply add the component to Visual Studio's Toolbox and use the
Properties window to change its options:

To use it in code, first import WK.Libraries.BetterFolderBrowserNS - the code below will then assist you:

    var betterFolderBrowser = new BetterFolderBrowser();

    betterFolderBrowser.Title = "Select folders...";
    betterFolderBrowser.RootFolder = "C:\\";
    
    // Allow multi-selection of folders.
    betterFolderBrowser.Multiselect = true;

    if (betterFolderBrowser.ShowDialog() == DialogResult.OK)
    {
        string[] selectedFolders = betterFolderBrowser1.SelectedFolders;
        
        // If you've disabled multi-selection, use 'SelectedFolder'.
        // string selectedFolder = betterFolderBrowser1.SelectedFolder;
    }

If you'd prefer blocking the main UI thread when calling the dialog, simply specify the window owner of the dialog using the ShowDialog(IWin32Window) method:

    if (betterFolderBrowser.ShowDialog(this) == DialogResult.OK)
    {
        // ...
    }

Note that we've specified the owner with the keyword this since we're calling the dialog from the Form where it is hosted.

If you're calling the dialog from within a custom UserControl and would prefer blocking the main UI thread when calling it, you can still specify the window owner using the ShowDialog(IWin32Window) method:

    if (betterFolderBrowser.ShowDialog(this.FindForm()) == DialogResult.OK)
    {
        // ...
    }

Donate

Hey, you can always buy me a coffee if this component (and others) have been of value to you. :)

BetterFolderBrowser

BetterFolderBrowser is a .NET component library that was written to help developers provide a better folder-browsing and selection experience to users by employing a similar browser dialog as the standard OpenFileDialog in place of the current FolderBrowserDialog which only allows for single-folder selections with its tree-view display format. This allows for a much easier viewing, modification, searching and selection experience using the standard Windows Explorer dialog.

Features

  • Works with .NET 2.0 and above allowing for usability across most .NET applications.
  • Built as a component making it accessible in Design Mode.
  • Uses the same dialog model as the OpenFileDialog, making it super easy for users to view, search, select, and modify folders when opened.
  • Allows passing of literal paths as strings to the RootFolder property.
  • Allows multiple selection of folders in constrast to the standard WinForms FolderBrowserDialog which only allows for single-folder selections. One can then access the list of selected folders using the property SelectedPaths or its variant SelectedFolders property.
  • The dialog can be displayed either blocking the UI thread or not using the ShowDialog(IWin32Window) or ShowDialog() methods respectively.
  • Provides additional custom UITypeEditor variants for folder-selection within the Properties window. They include the SelectedPathEditor (for single folder selection) and SelectedPathsEditor (for multiple folder selection) for use in-place of the standard WinForms SelectedPathEditor. For usage of these editors, ensure you import the namespace WK.Libraries.BetterFolderBrowserNS.Editors.
    Here are two examples of properties implementing the given custom editors:
    // Allows selection of one folder.
    [Editor(typeof(SelectedPathEditor), 
    typeof(UITypeEditor))]
    public string MyFolderPath { get; set; }
    
    // Allows selection of many folders.
    [Editor(typeof(SelectedPathsEditor), 
    typeof(UITypeEditor))]
    public string[] MyFolderPaths { get; set; }

Usage

If you prefer working with the Designer, simply add the component to Visual Studio's Toolbox and use the
Properties window to change its options:

To use it in code, first import WK.Libraries.BetterFolderBrowserNS - the code below will then assist you:

    var betterFolderBrowser = new BetterFolderBrowser();

    betterFolderBrowser.Title = "Select folders...";
    betterFolderBrowser.RootFolder = "C:\\";
    
    // Allow multi-selection of folders.
    betterFolderBrowser.Multiselect = true;

    if (betterFolderBrowser.ShowDialog() == DialogResult.OK)
    {
        string[] selectedFolders = betterFolderBrowser1.SelectedFolders;
        
        // If you've disabled multi-selection, use 'SelectedFolder'.
        // string selectedFolder = betterFolderBrowser1.SelectedFolder;
    }

If you'd prefer blocking the main UI thread when calling the dialog, simply specify the window owner of the dialog using the ShowDialog(IWin32Window) method:

    if (betterFolderBrowser.ShowDialog(this) == DialogResult.OK)
    {
        // ...
    }

Note that we've specified the owner with the keyword this since we're calling the dialog from the Form where it is hosted.

If you're calling the dialog from within a custom UserControl and would prefer blocking the main UI thread when calling it, you can still specify the window owner using the ShowDialog(IWin32Window) method:

    if (betterFolderBrowser.ShowDialog(this.FindForm()) == DialogResult.OK)
    {
        // ...
    }

Donate

Hey, you can always buy me a coffee if this component (and others) have been of value to you. :)

Release Notes

Initial Release.

Dependencies

This package has no dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.0 648 2/14/2019