.NET Win 7-style folder select dialog


Sometimes it’s necessary to allow a user to select a folder not a file. The .NET FolderBrowserDialog (part of System.Windows.Forms) is showing its age. With Vista came new folder selection dialog based on the OpenFileDialog but the Vista-style dialog has not been added to .NET. This post includes code (c#) to display the Vista/Win 7 style folder selection dialog.

Download the source code. There’s no license as such as you are free to take and do with the code what you will.

Here’s what the old folder selection dialog looks. If you search for information about selecting folders from a .NET application, this is what you’ll be referred to.

By contrast, if you use a Windows 7 application, this is what you will see.

Much better. IMHO it’s better because you are able to sort and search plus, sometimes, the old dialog will not enumerate network computers making it impossible to select folder on networked resources. In the new-style dialog you are able to enter a clue into the address box to get it to the correct machine.

Graceful degradation

Being a Vista-style dialog box the dialog can only be shown on Vista or later (not WinNT, XP or 2003). The code gracefully reverts to show the old-style dialog if OS is not major version 6 or later.

How does it work?

It turns out that the ability to show a Vista-like dialog is present in .NET but the methods are not public. So the ShowDialog() method uses reflection to call CreateVistaDialog and pass in all the parameters. The technique to do this is taken from the Google code project FED.

Information and Links

Join the fray by commenting, tracking what others have to say, or linking to it from your blog.


Other Posts

Write a Comment

Take a moment to comment and tell us what you think. Some basic HTML is allowed for formatting.

Reader Comments

Be the first to leave a comment!