タイトル : Re^3: TreeViewでの子ノード追加の方法 投稿日 : 2008/12/23(Tue) 02:58 投稿者 : 魔界の仮面弁士
再帰的に Sub AddNode(ByVal Nodes As TreeNodeCollection, ByVal sFolder As String) Dim N As TreeNode = Nodes.Add(sFolder) For Each sName In My.Computer.FileSystem.GetDirectories(sFolder) AddNode(N.Nodes, sName) Next End Sub などと呼び出せば良いのではないかと。 ただ、GetDirectoryName の結果を単純に追加するだけだと、 各階層ごとにフルパスが指定されてしまい、鬱陶しい気が…。 ということで、Path.GetFileName でディレクトリ名だけ切り出してみたサンプル。 環境が書かれていなかったので、現行バージョン(VB2008)で記述しています。 Public Class Form1 Sub Button1_Click() Handles Button1.Click Dim sFolder As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments TreeView1.ShowNodeToolTips = True TreeView1.BeginUpdate() TreeView1.Nodes.Clear() AddNode(TreeView1.Nodes, sFolder) TreeView1.EndUpdate() End Sub Sub AddNode(ByVal Nodes As TreeNodeCollection, ByVal sFolder As String) Dim N = Nodes.Add(System.IO.Path.GetFileName(sFolder)) Try For Each sName In My.Computer.FileSystem.GetDirectories(sFolder) AddNode(N.Nodes, sName) Next Catch ex As UnauthorizedAccessException N.ToolTipText = ex.Message N.ForeColor = Color.Red End Try N.EnsureVisible() End Sub End Class |