首页 > 范文大全 > 正文

TreeView控件的应用开发

开篇:润墨网以专业的文秘视角,为您筛选了一篇TreeView控件的应用开发范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:基于VS2008中Windows窗体应用程序中treeview控件,并结合ListViewr控件和SplitContainer容器控件的使用,建立TreeView树形结构视图为主体的资源管理器,带给用户一个清晰简明的界面,提高了人机交互的友好性。

关键词: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