实例分析VB.NETTreeview结构

本人很喜欢VB.NET,在工作中也很喜欢总结关于VB.NET Treeview结构的经验教训,我们简单分析一下VB.NET Treeview结构(笔者准备在另文专门剖析一下VB.NET Treeview结构,以方便有兴趣的网友进行高级应用)

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、奉贤网站维护、网站推广。

Treeview是由节点TreeNode组成的,第一级的称之为根节点TreeRoot,在根节点之下一级的称之为某个根节点的子节点TreeLeaf,某个子节点之下一级的子节点就称为该子节点的子节点。第个节点有两个标识方式,一个是它的Text,即显示出来的内容;另一个是它的Tag属性,一般用唯一标识码对其进行标识,以用于在使用时对节点的识别。在本文中,也主要用Text属性来显示节点的名称字段,用Tag属性来显示节点的编号属性。(节点编号被设为主键,也就是唯一的标识了)

1.加载根节点
好了,我们该开始在VB.NET中进行演练了!第一步,当然是看看怎么在窗体起始的时候加载根节点:

 
 
 
  1. '定义公用变量
  2. Dim myconnection As New OleDb.OleDbConnection()
  3. Dim MyAdapater As New OleDb.OleDbDataAdapter()
  4. Dim mycommand As New OleDb.OleDbCommand()
  5. Dim ds As New DataSet()
  6. Private Sub Form1_Load(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles MyBase.Load
  7. '载入根节点表至treeview中,作为第一级
  8. myconnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
  9. Data Source=" & Application.StartupPath & "\project.mdb" 
  10. '数据库连接请自行更换
  11. mycommand.CommandText = "SELECT 根节点编号,根节点名称 FROM 根节点"
  12. mycommand.Connection = myconnection
  13. Try
  14. myconnection.Close()
  15. myconnection.Open()
  16. Dim mysqlreader As OleDb.OleDbDataReader = mycommand.ExecuteReader
  17. TreeView1.Nodes.Clear()
  18. While mysqlreader.Read()
  19. Dim tree_root As New TreeNode()
  20. tree_root.Tag = mysqlreader.GetString(0)
  21. '把编号放入tag中
  22. tree_root.Text = mysqlreader.GetString(1)
  23. '树上显示的是根节点名称
  24. '请根据你数据库字段的类型来决定是否用getstring或其它类型
  25. TreeView1.Nodes.Add(tree_root)
  26. End While
  27. Catch ex As Exception
  28. MessageBox.Show(ex.ToString, "数据表根节点载入错误", vbOKOnly)
  29. Finally
  30. myconnection.Close()
  31. End Try
  32. TreeView1.ExpandAll()
  33. TreeView1.Select()
  34. End Sub

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

 
 
 
  1. Public Function NodeLevel(ByVal n As TreeNode) As Byte
  2. '* 找出树中当前节点的级数
  3. Dim i As Byte = 1
  4. Dim m As String
  5. Do Until n.Parent Is Nothing
  6. nn = n.Parent
  7. i += 1
  8. Loop
  9. Return i
  10. End Function

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

 
 
 
  1. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, 
    ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
  2. Select Case NodeLevel(e.Node).ToString
  3. Case "1"
  4. If e.Node.GetNodeCount(False) = 0 Then
  5. mycommand.CommandText = "select 第一级子节点编号,第一级子节点名称 
    from 第一级子节点 where 根节点编号 ='" & e.Node.Tag & "'"
  6. fill_treeleaf()
  7. End If
  8. Case "2"
  9. If e.Node.GetNodeCount(False) = 0 Then
  10. mycommand.CommandText = "select 第二级子节点编号,第二级子节点名称 
    from 第二级子节点 where 第一级子节点编号 ='" & e.Node.Tag & "'"
  11. fill_treeleaf()
  12. End If
  13. End Select
  14. End Sub
  15. Public Sub fill_treeleaf()
  16. mycommand.Connection = myconnection
  17. Try
  18. myconnection.Open()
  19. Dim mysqlreader As OleDb.OleDbDataReader = mycommand.ExecuteReader
  20. While mysqlreader.Read()
  21. Dim tree_leaf As New TreeNode()
  22. tree_leaf.Tag = mysqlreader.GetString(0)
  23. tree_leaf.Text = mysqlreader.GetString(1)
  24. TreeView1.SelectedNode.Nodes.Add(tree_leaf)
  25. End While
  26. Catch ex As Exception
  27. MsgBox(ex.Message)
  28. Finally
  29. myconnection.Close()
  30. End Try
  31. End Sub

本文标题:实例分析VB.NETTreeview结构
文章路径:http://www.shufengxianlan.com/qtweb/news36/192836.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联