zeroGrav Posted January 1, 2003 Posted January 1, 2003 Hell there I am presently writing an application called CDatabase which will scan a gived CDrom and store its logical information in a subtree of the main TreeView widget on the main form. The problem lies in the fact that I cannot make my directory analyze function create nodes hierarchically using recursive functions. Say I have a folder "Moo" on the CDrom. That folder has couple of files and some subfolders and so on. I can't create an in-memory image of that logical structure using TreeNodes, TreeView. I actually figured a way of doing something, but it's not what I wanted. I scan the folders/files of the cdrom and place it all in an ArrayList. Then I process each item in the list and create nodes in the tree (I use String.split to get the nodes' names). But the problem is that my thing is not working properly. It would not create nodes/subnodes correctly and I don't know why... Here's what I have so far. It's not the way it should be, I know there is anoher solution to this problem. Ideas welcome! Imports System.IO Public Class DirAnalyzer Dim entries As New ArrayList() Sub New(ByVal tree As TreeView) analyzeFolder("D:\New Folder") populateTree(tree) End Sub Sub analyzeFolder(ByVal folder As String) Dim subDirs As String() = Directory.GetDirectories(folder) Dim files As String() = Directory.GetFiles(folder) Dim file, dir As String For Each file In files entries.Add(file) Next For Each dir In subDirs entries.Add(dir) analyzeFolder(dir) Next End Sub Sub populateTree(ByVal tree As TreeView) Dim t As String Dim a As Int32 Dim tokens() As String For Each t In entries Console.WriteLine("Line : " + t) tokens = Split(t, "\") While a < tokens.Length - 1 addItem(tokens(a), tree, a) a = a + 1 End While Next End Sub Sub addItem(ByVal text As String, ByRef tree As TreeView, ByVal level As Int32) Console.WriteLine("adding entry: " + text) Select Case level Case 0 tree.Nodes.Add(text) Case 1 tree.Nodes(0).Nodes.Add(text) Case 2 tree.Nodes(0).Nodes(0).Nodes.Add(text) Case 3 tree.Nodes(0).Nodes(0).Nodes(0).Nodes.Add(text) Case 4 tree.Nodes(0).Nodes(0).Nodes(0).Nodes(0).Nodes.Add(text) End Select End Sub End Class =================== Quote
*Gurus* divil Posted January 1, 2003 *Gurus* Posted January 1, 2003 Make a sub which takes a Node and a path as a parameter. In that sub, first enumerate the directories, creating a node for each one and recursing on that node with the directory name. Then add files too, if you need to. Quote MVP, Visual Developer - .NET Now you see why evil will always triumph - because good is dumb. My free .NET Windows Forms Controls and Articles
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.