[RESOLVED] Treeview Add Node Function
I am attempting to write a sub that will add a node to a treeview:
VB Code:
Private Sub AddNode(ByVal tvwName As TreeView, _
ByVal strText As String, ByVal intImage As Integer, _
Optional ByVal intSelectImage As Integer = 99999)
Dim tvwNode As New TreeNode
With tvwNode
.Text = strText
.ImageIndex = intImage
If intSelectImage <> 99999 Then .SelectedImageIndex = intSelectImage Else .SelectedImageIndex = intImage
End With
tvwName.Nodes.Add(tvwNode)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call AddNode(TreeView1, "Text1", 8)
End Sub
How can I pass the node to this sub to which I want to add a child node to?
Re: Treeview Add Node Function
Basically here is the VB6 sub I am trying to recreate:
VB Code:
Public Sub tvwNode_Add(tvwName As TreeView, _
tvwParent As String, _
tvwRelationship As String, _
tvwKey As String, _
tvwText As String, _
Optional tvwTag As String, _
Optional ByVal tvwImage As Long, _
Optional ByVal tvwImageSel As Long, _
Optional tvwEnsureVisible As Boolean = True)
Dim nodX As Node
With tvwName
With .Nodes
Set nodX = .Add(tvwParent, tvwRelationship, tvwKey, tvwText, tvwImage, tvwImageSel)
nodX.Tag = tvwTag & ""
End With
If tvwEnsureVisible Then
.Nodes(tvwKey).EnsureVisible
End If
End With
Set nodX = Nothing
End Sub
as well as this one too
VB Code:
Public Sub tvwNode_Edit(tvwName As TreeView, _
tvwIndex As Long, _
tvwText As String, _
Optional ByVal tvwKey As String, _
Optional ByVal tvwTag As String, _
Optional ByVal tvwTextColor As Long = vbBlack)
On Error GoTo tvwNode_Edit_Error
With tvwName.Nodes.Item(tvwIndex)
.Key = tvwKey
.ForeColor = tvwTextColor
.Text = tvwText
.Tag = tvwTag
End With
On Error GoTo 0
Exit Sub
tvwNode_Edit_Error:
If Err.Number = 35603 Then
Exit Sub
Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure tvwNode_Edit of Module "
End If
End Sub
Re: Treeview Add Node Function
Re: Treeview Add Node Function
Hi
I wrote this example to give you some ideas. i knocked it up quickly :blush:
But it's not the usual way of displaying a tree. Usually you are displaying some data and you would use some re-entrant code.eg (recursion)
just paste this onto a form with 3 buttons and a treeview
Play around with selecting nodes!
hope it helps
Mike Pooley
VB Code:
Public Class Form1
Dim Selectednode As TreeNode
Private Sub AddSibling(ByVal CurrentNode As TreeNode, _
ByVal strText As String, ByVal intImage As Integer, _
Optional ByVal intSelectImage As Integer = 99999)
Dim tvwnode As New TreeNode
With tvwNode
.Text = strText
.ImageIndex = intImage
If intSelectImage <> 99999 Then .SelectedImageIndex = intSelectImage Else .SelectedImageIndex = intImage
End With
If CurrentNode.Level = 0 Then
TreeView1.Nodes.Add(tvwnode)
Else
CurrentNode.Parent.Nodes.Add(tvwnode)
End If
End Sub
Private Sub AddChild(ByVal CurrentNode As TreeNode, _
ByVal strText As String, ByVal intImage As Integer, _
Optional ByVal intSelectImage As Integer = 99999)
Dim tvwnode As New TreeNode
With tvwnode
.Text = strText
.ImageIndex = intImage
If intSelectImage <> 99999 Then .SelectedImageIndex = intSelectImage Else .SelectedImageIndex = intImage
End With
CurrentNode.Nodes.Add(tvwnode)
TreeView1.ExpandAll()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call AddSibling(Selectednode, "sibling ", 8)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
AddChild(Selectednode, "Child", 8)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim rootnode As TreeNode
rootnode = Me.TreeView1.Nodes.Add("RootNode", "Root")
Selectednode = rootnode
End Sub
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
Selectednode = e.Node
End Sub
End Class
Re: Treeview Add Node Function
mikepy,
Thanks for the code! It make a little more sense to me now.