سلام
من میخام تمام فولدر های موجود در یک درایو در treeview و listbox نمایش داده شوند
مثلا: همه فولدر های موجود در درایو D
D:\Folder-1
D:\Folder-2/Folder-3
و...
به طور خلاصه همه فولدر ها رو پیدا کنه.
public Form1() { InitializeComponent(); DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\hikuma\Documents\IR"); if (directoryInfo.Exists) { treeView1.AfterSelect += treeView1_AfterSelect; BuildTree(directoryInfo, treeView1.Nodes); } } private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe) { TreeNode curNode = addInMe.Add(directoryInfo.Name); foreach (FileInfo file in directoryInfo.GetFiles()) { curNode.Nodes.Add(file.FullName, file.Name); } foreach (DirectoryInfo subdir in directoryInfo.GetDirectories()) { BuildTree(subdir, curNode.Nodes); } } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if(e.Node.Name.EndsWith("txt")) { this.richTextBox1.Clear(); StreamReader reader = new StreamReader(e.Node.Name); this.richTextBox1.Text = reader.ReadToEnd(); reader.Close(); } }
یک treeview با نام dirsTreeView در فرم تون بسازید و داخل رویداده BeforeExpand آن کد زیر را قرار بدید :
if (e.Node.Nodes.Count > 0) { if (e.Node.Nodes[0].Text == "..." && e.Node.Nodes[0].Tag == null) { e.Node.Nodes.Clear(); //get the list of sub direcotires string[] dirs = Directory.GetDirectories(e.Node.Tag.ToString()); foreach (string dir in dirs) { DirectoryInfo di = new DirectoryInfo(dir); TreeNode node = new TreeNode(di.Name, 0, 1); try { //keep the directory's full path in the tag for use later node.Tag = dir; //if the directory has sub directories add the place holder if (di.GetDirectories().Count() > 0) node.Nodes.Add(null, "...", 0, 0); } catch (UnauthorizedAccessException) { //display a locked folder icon node.ImageIndex = 12; node.SelectedImageIndex = 12; } catch (Exception ex) { MessageBox.Show(ex.Message, "DirectoryLister", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { e.Node.Nodes.Add(node); } } }
و سپس برای داخل کد Page_Load صفحه کد زیر را نمایش بدید :
foreach (string drive in drives) { DriveInfo di = new DriveInfo(drive); int driveImage; switch (di.DriveType) { case DriveType.CDRom: driveImage = 3; break; case DriveType.Network: driveImage = 6; break; case DriveType.NoRootDirectory: driveImage = 8; break; case DriveType.Unknown: driveImage = 8; break; default: driveImage = 2; break; } TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage); node.Tag = drive; if (di.IsReady == true) node.Nodes.Add("..."); dirsTreeView.Nodes.Add(node); }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)