0

C: ドライブに、フォームが読み込まれるとすぐにアクセスしたいフォルダーがあります。毎回各ノードを開いてスクロールしたくありません。これらの多くの機能を使用する方法を知っているので、ツリービューを使用したいと思っています。それは私の目的に合っています。

C:\Users\user\Documents\Visual Studio 2010\Projects という基本的なファイル構造を使用して、私が求めているものの例を示します。

ツリービュー全体からアクセスしようとすると、アクセスするのに多数のノードが必要になります。ツリービューを開始したいので、メインノードはプロジェクトになります

どうすればこれを行うことができますか?

4

2 に答える 2

1

以下は、ノードの名前がフォルダーのフル パスであると想定する例です。

Protected Overrides Sub OnLoad(e As EventArgs)
  Dim name As String = "c:\users\blairg\documents\visual studio 2010\projects"

  Dim testNode As New TreeNode("Projects")
  testNode.Name = name
  TreeView1.Nodes.Add(testNode)

  Dim node() As TreeNode = TreeView1.Nodes.Find(name, True)
  If node.Count = 1 Then
    TreeView1.SelectedNode = node(0)
  End If

  MyBase.OnLoad(e)
End Sub
于 2012-07-24T11:34:18.833 に答える
0

上記の答えがうまくいくと確信しています。しかし、私は次のようにしてそれを整理することができました:

        Dim backupfolder As String = netpath & "\MANUFPC BACKUP PROCESS\" & site & "\" & factory & "\" & line & "\" & pc

        Dim mRootNode As New TreeNode
        mRootNode.Text = pc
        mRootNode.Tag = backupfolder
        mRootNode.Nodes.Add("*DUMMY*")
        'adds plus icon to allow extension
        backupFolderDirectory.Nodes.Add(mRootNode)

次に、他の 2 つの関数:

Private Sub TreeView1_BeforeCollapse(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles backupFolderDirectory.BeforeCollapse
    ' clear the node that is being collapsed
    e.Node.Nodes.Clear()
    ' add a dummy TreeNode to the node being collapsed so it is expandable
    e.Node.Nodes.Add("*DUMMY*")
End Sub

Private Sub TreeView1_BeforeExpand(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles backupFolderDirectory.BeforeExpand
    ' clear the expanding node so we can re-populate it, or else we end up with duplicate nodes
    e.Node.Nodes.Clear()

    ' get the directory representing this node
    Dim mNodeDirectory As DirectoryInfo
    mNodeDirectory = New DirectoryInfo(e.Node.Tag.ToString)
    ' add each subdirectory from the file system to the expanding node as a child node
    Try
        For Each mDirectory As DirectoryInfo In mNodeDirectory.GetDirectories
            ' declare a child TreeNode for the next subdirectory
            Dim mDirectoryNode As New TreeNode
            Dim mystring(1) As String
            mystring(0) = mDirectory.FullName
            mystring(1) = "directory"
            ' store the full path to this directory in the child TreeNode's Tag property
            mDirectoryNode.Tag = mystring(0)
            ' set the child TreeNodes's display text
            mDirectoryNode.Text = mDirectory.Name
            ' add a dummy TreeNode to this child TreeNode to make it expandable
            mDirectoryNode.Nodes.Add("*DUMMY*")
            ' add this child TreeNode to the expanding TreeNode
            e.Node.Nodes.Add(mDirectoryNode)
        Next

        For Each mFiles As FileInfo In mNodeDirectory.GetFiles
            ' declare a child TreeNode for the next subdirectory
            Dim mFileNode As New TreeNode
            Dim mystring(1) As String
            mystring(0) = mFiles.FullName
            mystring(1) = "file"
            ' store the full path to this directory in the child TreeNode's Tag property
            mFileNode.Tag = mystring(0)
            ' set the child TreeNodes's display text
            mFileNode.Text = mFiles.Name
            ' add this child TreeNode to the expanding TreeNode
            e.Node.Nodes.Add(mFileNode)
        Next

    Catch ex As IOException
        'sets up 2 different exceptions then the last one catches other exceptions that could be made from adding folder/files etc
        e.Node.Remove()
        MsgBox("Device/Folder not accessible", MsgBoxStyle.OkOnly, "Device not Ready")
    Catch exc As NullReferenceException
        e.Node.Remove()
        MsgBox("Sorry this File/Folder can not be added", MsgBoxStyle.OkOnly, "Sorry")
    Catch exce As Exception
        e.Node.Remove()
        MsgBox("Device/Folder not accessible", MsgBoxStyle.OkOnly, "Device not Ready")
    End Try
End Sub
于 2012-07-24T13:20:44.530 に答える