《2022年VB中treeview控件的使用方法 .pdf》由会员分享,可在线阅读,更多相关《2022年VB中treeview控件的使用方法 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VB 中 treeview 控件的使用方法利用 treeview 控件可以获得驱动器下的所有目录和子目录,TreeView 控件最典型的使用就是 Windows 资源管理中显示文件夹列表的左边栏,现在我们就模仿它来做一个按树状结构显示指定盘符中所有文件夹的小程序。一、准备知识:1、了解TreeView 控件的基本使用,掌握了如何添加树状结构的数据到TreeView 控件中,相关文章参看这里: 入门 TreeView 控件的使用2、了解ImageList 控件的基本使用。3、了解 System.IO 命名空间中的Directory 类的一些常用用法,下面我们先了解下本文要用到Directory
2、类的成员GetDirectories :它用于获取指定目录中子目录的名称。如下代码所示,获取C:盘下的子目录:Dim dirs As String() = Directory.GetDirectories(c:) 其结果是我们点开C 盘后看到的文件夹,如果要获取更深层次的文件夹列表,就要一个一个文件夹循环使用Directory.GetDirectories 方法。二、窗体布局在窗体上拖放一个TreeView 控件,一个Button 按钮,一个ImageList 组件在 ImageList 组件中按顺序添加如下三个图标,图标大小设置为16*16:图一:需要用到的图标三:编写代码首先, 我们已经知
3、道, 要想获得树状结构的每个层次中的子文件夹,我们必须使用递归过程来完成, 下面所示代码所执行的工作是:先把一个已经路径的文件夹添加到树状结构中,然后再遍历它的子文件夹:添加文件夹Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode) Dim i As Integer Dim node As New TreeNode 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
4、师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - 先添加本目录,从文件夹路径分析出文件夹名称node.Text = Strings.Replace(strPath, strFatherPath & , , , 1) 为单个节点指定节点未被选中时显示的图标node.ImageIndex = 1 为单个节点指定节点被选中时显示的图标node.SelectedImageIndex = 2 nodeFather.Nodes.Add(node) Application.DoEvents() Try Dim str() As String = iDir.G
5、etDirectories(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, B
6、yVal e As System.EventArgs) Handles Button1.Click 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - Dim node As New TreeNode 先把 C 盘添加到树中TreeView1.Nodes.Clear() node.ImageIndex = 0 node.Text = 本地磁盘C: node.SelectedImageIndex = -1 TreeView1.Node
7、s.Add(node) Dim i As Integer 获取 C:盘根目录下的文件夹Dim str() As String = iDir.GetDirectories(C:) For i = 0 To str.GetUpperBound(0) 调用遍历过程AddDirectory(C:, str(i), node) Next node = Nothing End Sub * 1、为树状浏览器控件添加节点和子节点用 ADD 方法添加一个新节点到树状浏览器的NODES 集合时,可以声明它是和已存在的节点所联系起来的。通常使用ADD 方法,其语法如下:Nodes.Add(relative,rela
8、tionship,key,text,image,selectedimage) 各个参数的意义如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - relationship 参数是通过关系节点参数与新节点连接的另一个节点;relationship 参数可能是以下情况:tvwlast-1 ;该节点置于所有其他的在relative 中被命名的同一级别的节点的后面tvwNext-2 ;该节点置于在relative 中被命名节点的后面tv
9、wPrevius-3 ;该节点置于在relative 中被命名的节点的前面tvwChild-4 ;该节点成为在relative 中被命名的节点的的子节点下面是一个例子:Dim node1,node2,node3,node4 as Node set Node1=TreeView1.Nodes.Add TreeView1.Nodes(1).text=node1 TreeView1.Nodes(1).key=node1 Set node2=treeview.nodes.add(node1,tvwChild,node2) TreeView1.Nodes(2).text=node2 TreeView1.
10、Nodes(2).key=node2 依次插入节点即可。2、为节点插入图象treeview1.node(3).image=leaf 注意我们一般从imagelist 中指定图象3、处理节点的点击, 怎样才能知道树状浏览器的哪一个节点被点击了呢?可以用NodeClick 事件 : public sub treeview1_nodeclick(byval node as comctllib.node) text1.text=you click&node.text end sub * 2、TreeView 的使用,及选中其中指定的节点= Private Sub Command1_Click() Di
11、m nodeY As Node For Each nodeY In TreeView1.Nodes If CStr(Trim(nodeY .Text) = ff Then nodeY.Selected = True TreeView1.SetFocus Exit For End If Next 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - End Sub Private Sub Form_Load() Rs1.CommandT
12、ype = adCmdText Rs1.RecordSource = select distinct biao,zu from test order by zu Rs1.Refresh Dim Rs As ADODB.Recordset Set Rs = Rs1.Recordset Set nodX = TreeView1.Nodes.Add(, , r, 报表组) i = 0 Dim TempString As String Dim TempKey As Long Do Until Rs.EOF Or Rs.BOF If TempString = Rs!zu Then Set nodeX =
13、 TreeView1.Nodes.Add(Z & TempKey, tvwChild, B & i, Rs!biao) Else Set nodX = TreeView1.Nodes.Add(r, tvwChild, Z & i, Rs!zu) Set nodeX = TreeView1.Nodes.Add(Z & i, tvwChild, B & i, Rs!biao) TempString = Rs!zu TempKey = i End If Rs.MoveNext i = i + 1 Loop End Sub * 3功能:选择Treeview 节点下所有节点- Private Sub F
14、orm_Load() TreeView1.Checkboxes = True TreeView1.Nodes.Add , R, root, root TreeView1.Nodes.Add root, tvwChild, key1, aa TreeView1.Nodes.Add key1, tvwChild, key11, ccc TreeView1.Nodes.Add root, tvwChild, key2, bb TreeView1.Nodes.Add key2, tvwChild, key21, ddd TreeView1.Nodes.Add key2, tvwChild, key21
15、1, eee For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = True Next End Sub 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - Private Sub CheckChild(ByVal Node As MSComctlLib.Node, ByVal bCheck As Boolean, Optional ByVal bNext A
16、s 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, bChild) 对同一层节点End If End If End Sub Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node) Call CheckChild(Node, Node.Checked, False, True) 处理子节点End Sub 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -