2017-05-28 50 views
2

VB.NETで単純な関数を実装しました。この関数はTreeView内のノードの名前を検索し、特定のノードを強調表示します。その後、ノードが属するTreeViewのパスのみを展開したいと考えています。VB TreeView - 特定のノードのパスのみを展開します。

これは、VB関数でTreeViewのパスを与えることで実装することは可能ですか、それとも別の関数を実装する必要がありますか?

あなたは私のコード

Private Sub FindRecursive(ByVal tNode As TreeNode) 

    Dim tn As TreeNode 

    For Each tn In tNode.Nodes 
     If tn.Text = itemCode.Text Then 
      tn.BackColor = Color.Yellow 
      path1 = tNode.Tag 
      Dim filename As String = System.IO.Path.Combine(path1, tn.Text) 
      PictureBox3.Image = Image.FromFile(filename) 

      'tNode.Expand() 
      'TreeView1.TopNode.Expand() 
      'TreeView1.ExpandAll() 
      'tNode.Expand() 
      'tNode.ExpandAll() 
     End If 

     FindRecursive(tn) 
    Next 

End Sub 
+0

実際にはありません。一般的な '.Controls.Find'がありますが、すべての子コントロールを検索するには遅すぎるかもしれません。https://stackoverflow.com/questions/3898588/find-control-by-name-from-windows-forms-controls – Slai

+0

@ Slai私はサーチャーのTreeView関数を望んでいないが、TreeViewで選択されたノードの特定のパスのみを展開する関数 – Csalt

答えて

0

を見ることができます下に私はあなたがTreeNode.EnsureVisibleメソッドを呼び出したいと思います。

https://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.ensurevisible(v=vs.110).aspx

あなたはTreeNodeCollection.Find(key:=itemCode.Text, searchAllChildren:=True)を調べるに興味があるかもしれません。自分で作成したノードを見つける際に同じ機能を実装するかもしれません。以下はMSDNリンクです: https://msdn.microsoft.com/en-us/library/system.windows.forms.treenodecollection.find(v=vs.110).aspx

関連する問題