Henry手记-VB.NET中动态加载Treeview节点(二)

                 Henry手记-VB.NET中动态加载Treeview节点(二)

                               韩睿(2003.4.13)

2.点击时加入子节点

TreeView的点击,对于TreeView控件本身,并没有为哪一个级别的Node编写点击(选择)事件处理程序,而是把所有节点的点击事件都写入了一个AfterSelect事件中。因此,在编写点击加入子节点的程序之前,我们还必须编写一个查找点击的节点是哪一级节点的方法。

Public Function NodeLevel(ByVal n As TreeNode) As Byte

        '* 找出树中当前节点的级数

        Dim i As Byte = 1

        Dim m As String

        Do Until n.Parent Is Nothing

            n = n.Parent

            i += 1

        Loop

        Return i

End Function

通过这个函数,就可以很方便地得到节点的级别。现在我们可以放心地编写节点选择事件处理程序,以实现动态加载各级节点的子节点。

Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

        Select Case NodeLevel(e.Node).ToString

            Case "1"

                If e.Node.GetNodeCount(False) = 0 Then

                    mycommand.CommandText = "select 第一级子节点编号,第一级子节点名称 from 第一级子节点 where 根节点编号 ='" & e.Node.Tag & "'"

                    fill_treeleaf()

                End If

            Case "2"

                If e.Node.GetNodeCount(False) = 0 Then

                    mycommand.CommandText = "select 第二级子节点编号,第二级子节点名称 from 第二级子节点 where 第一级子节点编号 ='" & e.Node.Tag & "'"

                    fill_treeleaf()

                End If

        End Select

End Sub

 

Public Sub fill_treeleaf()

        mycommand.Connection = myconnection

        Try

            myconnection.Open()

            Dim mysqlreader As OleDb.OleDbDataReader = mycommand.ExecuteReader

            While mysqlreader.Read()

                Dim tree_leaf As New TreeNode()

                tree_leaf.Tag = mysqlreader.GetString(0)

                tree_leaf.Text = mysqlreader.GetString(1)

                TreeView1.SelectedNode.Nodes.Add(tree_leaf)

            End While

        Catch ex As Exception

            MsgBox(ex.Message)

        Finally

            myconnection.Close()

        End Try

End Sub

好了,现在来看看点击的结果,如图2和图3所示。

 

Note:请大家要熟悉TextTag的作用,在使用时会达到很好的效果。

----

声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。

QQ: 18349592

E-Mail: henry7685@hotmail.com

     请访问本人专栏:http://www.csdn.net/develop/author/netauthor/Latitude/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值