PDA

View Full Version : سوال در مورد TreeView



zehs_sha
پنج شنبه 30 مرداد 1382, 11:50 صبح
چگونه در هنگام برنامه نویسی می توانم تشخیص دهم که آیا بر روی node که کاربر انتخاب کرده زیر شاخه وجود دارد یا خیر و اگر وجود دارد با کد نویسی تمام شاخه و زیر شاخه را یدست آورم .

S.Azish
پنج شنبه 30 مرداد 1382, 14:36 عصر
VB


Option Explicit

Private Sub Form_Load()
'
TreeView1.Nodes.Add , , "main", "main"
TreeView1.Nodes.Add "main", tvwChild, "child1", "child 1"
TreeView1.Nodes.Add "child1", tvwChild, "child11", "child 11"
TreeView1.Nodes.Add "child1", tvwChild, "child12", "child 12"
TreeView1.Nodes.Add "child11", tvwChild, "child111", "child 111"
'
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
'

Dim nodeTemp As Node
Dim aPath() As String

If Node.Children Then
Set nodeTemp = Node
Do Until nodeTemp Is Nothing
If Not nodeTemp.Child Is Nothing Then
Set nodeTemp = nodeTemp.Child
Else
If Not nodeTemp.Next Is Nothing Then
Set nodeTemp = nodeTemp.Next
Else
Set nodeTemp = GetParent(nodeTemp)
If nodeTemp Is Nothing Then
Exit Do
End If
End If
End If
aPath = Split(nodeTemp.FullPath, "\")
Debug.Print String(UBound(aPath) * 2, ".") & nodeTemp.Text
Loop
End If
'
End Sub

Private Function GetParent(ByRef Node As Node) As Node
'
Dim tempNode As Node

Set tempNode = Node.Parent
If tempNode Is Nothing Then Exit Function
If tempNode.Next Is Nothing Then
Set tempNode = GetParent(tempNode)
Else
Set tempNode = tempNode.Next
End If
If Not tempNode Is Nothing Then
Set GetParent = tempNode
End If
'
End Function



VB.Net


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'
Me.TreeView1.Nodes.AddRange(New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("Main", New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("Child 1", New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("Child 11", New System.Windows.Forms.TreeNode() {New System.Windows.Forms.TreeNode("Child 111")}), New System.Windows.Forms.TreeNode("Child 12")})})})
'
End Sub

Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
'
Dim nodeTemp As TreeNode = e.Node

If nodeTemp.GetNodeCount(True) > 0 Then
Do Until nodeTemp Is Nothing
If nodeTemp.GetNodeCount(False) > 0 Then
nodeTemp = nodeTemp.Nodes(0)
Else
If Not nodeTemp.NextNode Is Nothing Then
nodeTemp = nodeTemp.NextNode
Else
nodeTemp = GetParent(nodeTemp)
If nodeTemp Is Nothing Then
Exit Do
End If
End If
End If
Loop
End If
'
End Sub

Private Function GetParent(ByRef Node As TreeNode) As TreeNode
'
Dim nodeTemp As TreeNode

nodeTemp = Node.Parent
If nodeTemp Is Nothing Then Exit Function
If nodeTemp.NextNode Is Nothing Then
nodeTemp = GetParent(nodeTemp)
Else
nodeTemp = nodeTemp.NextNode
End If
If Not nodeTemp Is Nothing Then
Return nodeTemp
End If
'
End Function


End Class