VB中treeview控件的使用方法

2019-03-15 22:37

VB中treeview控件的使用方法

利用treeview控件可以获得驱动器下的所有目录和子目录,TreeView 控件最典型的使用就是Windows资源管理中显示文件夹列表的左边栏,现在我们就模仿它来做一个按树状结构显示指定盘符中所有文件夹的小程序。

一、准备知识:

1、了解 TreeView 控件的基本使用,掌握了如何添加树状结构的数据到TreeView 控件中,相关文章参看这里:vb.net入门——TreeView 控件的使用

2、了解 ImageList 控件的基本使用。

3、了解vb.net System.IO 命名空间中的Directory 类的一些常用用法,下面我们先了解下本文要用到Directory类的成员GetDirectories:它用于获取指定目录中子目录的名称。如下代码所示,获取C:盘下的子目录:

Dim dirs As String() = Directory.GetDirectories(\

其结果是我们点开C盘后看到的文件夹,如果要获取更深层次的文件夹列表,就要一个一个文件夹循环使用Directory.GetDirectories方法。

二、窗体布局

在窗体上拖放一个TreeView 控件,一个Button 按钮,一个ImageList 组件

在ImageList 组件中按顺序添加如下三个图标,图标大小设置为16*16:

图一:需要用到的图标

三:编写代码

首先,我们已经知道,要想获得树状结构的每个层次中的子文件夹,我们必须使用递归过程来完成,下面所示代码所执行的工作是:先把一个已经路径的文件夹添加到树状结构中,然后再遍历它的子文件夹:

'添加文件夹

Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode)

Dim i As Integer

Dim node As New TreeNode

'先添加本目录,从文件夹路径分析出文件夹名称

node.Text = Strings.Replace(strPath, strFatherPath & \

'为单个节点指定节点未被选中时显示的图标

node.ImageIndex = 1

'为单个节点指定节点被选中时显示的图标

node.SelectedImageIndex = 2

nodeFather.Nodes.Add(node)

Application.DoEvents() Try

Dim str() As String = iDir.GetDirectories(strPath)

'遍历该目录的子文件夹

For i = 0 To str.GetUpperBound(0)

AddDirectory(strPath, str(i), node) Next

Catch ex As Exception

Debug.WriteLine(ex.Message)

End Try

node = Nothing

End Sub

然后在按钮的Click事件中添加代码,用于添加树状结构的顶层以及调用遍历子文件的递归过程,详细代码如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim node As New TreeNode

'先把C盘添加到树中

TreeView1.Nodes.Clear()

node.ImageIndex = 0

node.Text = \本地磁盘 C:\

node.SelectedImageIndex = -1

TreeView1.Nodes.Add(node)

Dim i As Integer

'获取C:盘根目录下的文件夹

Dim str() As String = iDir.GetDirectories(\

For i = 0 To str.GetUpperBound(0)

'调用遍历过程

AddDirectory(\ Next

node = Nothing

End Sub

***************************************** 1、为树状浏览器控件添加节点和子节点

用ADD方法添加一个新节点到树状浏览器的NODES集合时,可以声明它是和已存在的节点所联系起来的。通常使用ADD方法,其语法如下:

Nodes.Add(relative,[relationship][,key][,text][,image][,selectedimage])

各个参数的意义如下:

relationship 参数是通过关系节点参数与新节点连接的另一个节点; relationship 参数可能是以下情况:

tvwlast--1;该节点置于所有其他的在relative中被命名的同一级别的节点的后面 tvwNext--2;该节点置于在relative中被命名节点的后面

tvwPrevius--3;该节点置于在relative中被命名的节点的前面 tvwChild--4;该节点成为在relative中被命名的节点的的子节点

下面是一个例子:

Dim node1,node2,node3,node4 as Node set Node1=TreeView1.Nodes.Add TreeView1.Nodes(1).text=\ TreeView1.Nodes(1).key=\

Set node2=treeview.nodes.add(\ TreeView1.Nodes(2).text=\ TreeView1.Nodes(2).key=\

依次插入节点即可。

2、为节点插入图象

treeview1.node(3).image=\

注意我们一般从imagelist中指定图象 3、处理节点的点击,怎样才能知道树状浏览器的哪一个节点被点击了呢?可以用NodeClick 事件:

public sub treeview1_nodeclick(byval node as comctllib.node) text1.text=\ end sub

********************************************************* 2、TreeView的使用,及选中其中指定的节点 ’=============

Private Sub Command1_Click() Dim nodeY As Node

For Each nodeY In TreeView1.Nodes

If CStr(Trim(nodeY.Text)) = \ nodeY.Selected = True TreeView1.SetFocus Exit For End If Next

End Sub

Private Sub Form_Load()

Rs1.CommandType = adCmdText

Rs1.RecordSource = \ Rs1.Refresh

Dim Rs As ADODB.Recordset Set Rs = Rs1.Recordset

Set nodX = TreeView1.Nodes.Add(, , \报表组 \ i = 0

Dim TempString As String Dim TempKey As Long

Do Until Rs.EOF Or Rs.BOF If TempString = Rs!zu Then

Set nodeX = TreeView1.Nodes.Add(\ Else

Set nodX = TreeView1.Nodes.Add(\

Set nodeX = TreeView1.Nodes.Add(\ TempString = Rs!zu TempKey = i End If

Rs.MoveNext i = i + 1 Loop End Sub

********************************************************** 3'功能:选择Treeview节点下所有节点

'----------------------------------------------------------------------------

Private Sub Form_Load()

TreeView1.Checkboxes = True

TreeView1.Nodes.Add , \ \ \

TreeView1.Nodes.Add \ tvwChild, \ \ TreeView1.Nodes.Add \ tvwChild, \ \

TreeView1.Nodes.Add \ tvwChild, \ \ TreeView1.Nodes.Add \ tvwChild, \ \ TreeView1.Nodes.Add \ tvwChild, \ \ For I = 1 To TreeView1.Nodes.Count

TreeView1.Nodes(I).Expanded = True Next End Sub

Private Sub CheckChild(ByVal Node As MSComctlLib.Node, ByVal bCheck As Boolean, Optional ByVal bNext As Boolean = True, Optional ByVal bChild As Boolean = True)

If Not Node Is Nothing Then Node.Checked = bCheck

If Node.Children And bChild Then

Call CheckChild(Node.Child, bCheck, True, True) '对子节点

End If

If bNext Then

Call CheckChild(Node.Next, bCheck, True, '对同一层节点

End If End If End Sub

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node) Call CheckChild(Node, Node.Checked, False, '处理子节点 End Sub

bChild) True)


VB中treeview控件的使用方法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018唐县产业园区招商规划及体制机制创新发展咨询报告(目录) -

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: