tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。