Click here to Skip to main content
Click here to Skip to main content

Implementing a common File system browser with a ListView

, 24 Sep 2003
Rate this:
Please Sign up or sign in to vote.
A ListView Control like the one used in Windows Explorer
<!-- Article image -->

Sample Image - FileSystemListView.jpg

<!-- Add the rest of your HTML here -->

Introduction

Very often, we need to have a control for browsing the user file-system in order to select files or folders in our applications. But Microsoft did not include a control like that with Visual Studio .NET, so I gave it a try and developed a ListView component very similar to the one used in Windows Explorer.

Exceptions

  • Please note that Shell operations are not implemented and are not planned.
  • The "My Documents" icon is not the good one.

Key Features

  • Use the System ImageList for retrieving the icons (pretty fast)
  • Allows to get back to the parent folder (..), so you don't need a companion control or other button for doing that. (AllowParentFolderSelection property)

Usage

Just drag the component onto your form and call the control's Initialize() method in the form Load event.

Conclusions

So this is it. Maybe it will give you a good start for a more complete version.

Credits

  • Thanks to Furty for his works with his TreeView control. It gave me ideas for mine and I used the Shell32 stuff he discovered in coding his control.
  • SystemListView code developed and borrowed from Steve McMahon. Click here for his article.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Jonathan Gauthier
Architect CGI
Canada Canada
No Biography provided

Comments and Discussions

 
GeneralMy vote of 5 PinmemberCpei1-Mar-11 20:06 
GeneralAdd-in Code to select a default custom Folder on opening Pinmemberkabamaru13-Dec-10 10:35 
This component is simple and efficient, no flourish, just what I needed in my app.
However, Shell32 Intefracing was a REAL Pain ! (Why this choice over Plain'old IO ?)
 
All in all, here is the code I've added in order to open the explorer in a default custom folder :
 
                public void SetDefaultFolder(String folderPath)
                {
                        string[] folders = folderPath.Split('\\');
	      		Shell32.ShellClass shell = new Shell32.ShellClass();
	      		Shell32.Folder folder = shell.NameSpace(Win32API.ShellFolder.MyComputer);
            
                        for (int i = 0; i < folders.Length; i++)
                             folder = getSubFolder(folder, folders[i]);
 
		      	SetListViewItems(folder);
		}
 
		private Shell32.Folder getSubFolder(Shell32.Folder folder, string subfolderName)
		{
			foreach(Shell32.FolderItem folderItem in folder.Items())	
				{
				 if (folderItem.Name.Contains(subfolderName))
					return (Shell32.Folder)folderItem.GetFolder;
				}
                         throw new Exception("Specified Default Folder Not Found");
	        }
 

Usage :
 
           private void Form1_Load(object sender, System.EventArgs e)
		{
                        fileSystemListView1.SetDefaultFolder(@"E:\DATA\LOGS");
			fileSystemListView1.Initialize();
		}

QuestionDoesn't seem to work on VS 2005, have any idea why? Pinmembertrogov11-Dec-07 21:46 
AnswerRe: Doesn't seem to work on VS 2005, have any idea why? Pinmembertrogov17-Dec-07 6:30 
QuestionUpgrading To .Net 2.0 PinmemberAndreGr13-Nov-06 0:45 
AnswerRe: Upgrading To .Net 2.0 PinmemberAndreGr14-Nov-06 3:34 
Questionhow to get selected filename Pinmembercskurdal1-Sep-06 8:25 
GeneralWhy you didn't post the whole project ?! Pinmembermark_md427-Jul-06 23:55 
GeneralRe: Why you didn't post the whole project ?! PinmemberJonathan Gauthier30-Jul-06 0:49 
QuestionHidden Folders? PinmemberDaniel Schaffer23-Jan-06 5:29 
AnswerRe: Hidden Folders? PinmemberJos Branders31-Oct-09 7:52 
GeneralAdd sorting capability PinmemberDemonFox5-Sep-05 1:28 
GeneralRe: Add sorting capability PinmemberMark Johnson24-Aug-07 21:00 
GeneralProblem finding bug.. Pinmemberdermoultam16-Aug-05 20:55 
Generaladd context (right-click) menu with delete file, rename file, create directory, delete directory PinsussKenneth Scott30-Jun-05 18:20 
GeneralAdd . (currentfolder) to control and also add missing files PinsussKenneth Scott30-Jun-05 18:05 
GeneralRe: Add . (currentfolder) to control and also add missing files PinsussKenneth Scott2-Jul-05 14:17 
GeneralException during browsing of &quot;My Network Places&quot; Pinmemberom31-May-05 23:26 
GeneralHELP - Don't show ZIP and PDF files ! PinmemberLe_MuLoT8-Apr-05 7:43 
GeneralRe: HELP - Don't show ZIP and PDF files ! PinmemberLe_MuLoT15-Sep-05 11:38 
GeneralExecuting Selected Files PinmemberLe_MuLoT8-Apr-05 4:36 
GeneralAny one implemented this in vb.net PinsussVanjari22-Sep-04 4:26 
GeneralRe: Any one implemented this in vb.net PinmembereelisMX23-Sep-04 5:40 
Generalvisual studio .net 2005 beta PinsussAnonymous11-Sep-04 17:16 
GeneralRe: visual studio .net 2005 beta PinmemberWilsonProgramming8-Nov-04 14:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.1411019.1 | Last Updated 25 Sep 2003
Article Copyright 2003 by Jonathan Gauthier
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid