开篇:润墨网以专业的文秘视角,为您筛选了一篇TreeView控件的应用开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:基于VS2008中Windows窗体应用程序中treeview控件,并结合ListViewr控件和SplitContainer容器控件的使用,建立TreeView树形结构视图为主体的资源管理器,带给用户一个清晰简明的界面,提高了人机交互的友好性。
TreeView是以树形列表显示数据的控件,能分层展开和收缩各节点子目录。TreeView控件的应用非常广泛,几乎所有的应用程序中都会存在。
本文主要是基于VS2008中Windows窗体应用程序中TreeView控件,并结合ListViewr控件和SplitContainer容器控件的使用,建立TreeView树形结构视图为主体的资源管理器,它带给用户一个清晰简明的界面,提高了人机交互的友好性。
1 项目创建与窗体的排版
运行VS2008,创建一个VB的Windows窗体应用程序,在Windows窗体上,拖入SplitContainer容器控件,该控件分为左右两个区域,每个区域可放置一个其他控件。在左边区域里拖入TreeView控件,在其属性窗口里把DOCK属性改为Fill。在右边区域拖入一个ListView控件,在基属性窗口里把DOCK属性改为Fill,Columns集合编辑器里添加3个成员(ColumnHeader),分别将其名称改为:名称、大小、类型、修改时间。
2 TreeView控件的树形视图实现
2.1 在窗体代码类里上方,引用Imports System.IO命名空间,引用的目的是为了简写窗体类中关于驱动器、文件夹和文件的代码。
2.2 在窗体加载事件中建立一个节点“我的电脑”,并利用节点node的Tag属性来存放文件的完整地址,便于后面查询。遍历所有驱动器,并将驱动器的名称添加到TreeView中,形成一个驱动器的树形结构图。
Dim mynode As New TreeNode
mynode = TreeView1.Nodes.Add("我的电脑")
mynode.Tag = "mycomputer"
Dim drives As DriveInfo()= DriveInfo.GetDrives
Dim submynode As New TreeNode
For Each drive As DriveInfo In drives
submynode = mynode.Nodes.Add(drive.Name)
submynode.Tag = drive.Name
CreateTree(submynode,submynode.Tag.ToString)
Next
2.3 建立一个子程序来添加驱动器下的各个文件夹在TreeView上的节点。
Private Sub CreateTree(ByVal mynode As TreeNode,ByVal path As String)
Dim dir As DirectoryInfo = New DirectoryInfo(path)
Dim submynode As New TreeNode
If dir.Name.Substring(1,2)= ":\" Or dir.Attributes = FileAttributes.Directory Then
Try
For Each subdir As DirectoryInfo In dir.GetDirectories
If subdir.Attributes = FileAttributes.Directory Then
Try
submynode = mynode.Nodes.Add(subdir.Name)
submynode.Tag = subdir.FullName
CreateTree(submynode,submynode.Tag.ToString)
Catch ex As Exception
End Try
End If
Next
Catch ex As Exception
End Try
End If
End Sub
3 建立一个子程序用于在点击TreeView节点时,在ListView中显现该节点对应文件夹下的子文件夹和文件
Private Sub FilterListView(ByVal mynode As TreeNode)
ListView1.Items.Clear()''清空ListView
If mynode.Tag.ToString = "mycomputer" Then Return
Dim dir As DirectoryInfo = New DirectoryInfo(mynode.Tag.ToString)
If dir.Name.Substring(1,2)= ":\" Or dir.Attributes = FileAttributes.Directory Then
Try
Dim item As ListViewItem = Nothing
Dim subitem As ListViewItem.ListViewSubItem()= Nothing
For Each subdir As DirectoryInfo In dir.GetDirectories
‘定义显现节点对应文件夹下的子文件
If subdir.Attributes = FileAttributes.Directory Then