Wednesday, May 9, 2012

Sample TreeView


Public Class TreeViewSample

#Region "Even Procedure"

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        Dim index As Int16 = CheckRootNode(TreeView1, cboGroup.Text)
        With TreeView1
            If index = -1 Then
                'Add Root Node.
                .Nodes.Add(cboGroup.Text)
                'Add First Sub Node.
                If txtName.Text.Trim <> "" Then .Nodes(.Nodes.Count - 1).Nodes.Add(txtName.Text.Trim)
                .ExpandAll()
            Else
                'Add Sub Node.
                If txtName.Text.Trim <> "" Then
                    If CheckNode(.Nodes(index), txtName.Text) = -1 Then _
                    .Nodes(index).Nodes.Add(txtName.Text.Trim)
                End If

                .ExpandAll()
            End If
        End With

        'Set Default
        setDefault()
    End Sub

    Private Sub btnRmove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRmove.Click

    End Sub

#End Region

   
#Region "sub procedure"

    Function CheckRootNode(ByVal TV As TreeView, _
                           ByVal NodeText As String) As _
                           Integer
        'Using For i
        'For i As Integer = 0 To TV.Nodes.Count - 1
        '    If TV.Nodes(i).Text = NodeText Then
        '        Return i
        '    End If
        'Next
        'Return -1

        'Using For each
        Dim i As Int16 = 0
        For Each N As TreeNode In TV.Nodes
            If N.Text = NodeText Then
                Return i
            End If
            i += 1
        Next
        Return -1
    End Function

    Function CheckNode(ByVal N As TreeNode, _
                          ByVal NodeText As String) As _
                          Integer
        'Using For i
        'For i As Integer = 0 To TV.Nodes.Count - 1
        '    If TV.Nodes(i).Text = NodeText Then
        '        Return i
        '    End If
        'Next
        'Return -1

        'Using For each
        Dim i As Int16 = 0
        For Each sN As TreeNode In N.Nodes
            If sN.Text = NodeText Then
                Return i
            End If
            i += 1
        Next
        Return -1
    End Function

    Sub setDefault()
        'set default causor
        cboGroup.Focus()

        For Each obj As Object In Me.Controls
            If TypeOf obj Is TextBox Or _
            TypeOf obj Is ComboBox Then
                obj.Text = ""
            ElseIf TypeOf obj Is DateTimePicker Then
                obj.value = Now.Date
            End If
        Next
    End Sub




#End Region

 
    Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        'Set default screen
        setDefault()

        With TreeView1
            'If Node is "Root Node", the parent is nothing.
            If .SelectedNode.Parent Is Nothing Then
                cboGroup.Text = .SelectedNode.Text
            Else 'Mean click on sub node
                cboGroup.Text = .SelectedNode.Parent.Text
                txtName.Text = .SelectedNode.Text
            End If

        End With

    End Sub
End Class

No comments:

Post a Comment