TreeView控件的应用开发
作者:
来源:《艺术科技》2012年第03
        要:基于VS2008Windows窗体应用程序中TreeView控件,并结合ListViewr控件和SplitContainer容器控件的使用,建立TreeView树形结构视图为主体的资源管理器,带给用户一个清晰简明的界面,提高了人机交互的友好性。
        关键词:TreeView控件;应用;开发
        TreeView是以树形列表显示数据的控件,能分层展开和收缩各节点子目录。TreeView控件的应用非常广泛,几乎所有的应用程序中都会存在。
        本文主要是基于VS2008Windows窗体应用程序中TreeView控件,并结合ListViewr控件和SplitContainer容器控件的使用,建立TreeView树形结构视图为主体的资源管理器,它带给用户一个清晰简明的界面,提高了人机交互的友好性。
        1 项目创建与窗体的排版
        运行VS2008,创建一个VBWindows窗体应用程序,在Windows窗体上,拖入SplitContainer容器控件,该控件分为左右两个区域,每个区域可放置一个其他控件。在左边区域里拖入TreeView控件,在其属性窗口里把DOCK属性改为Fill。在右边区域拖入一个ListView控件,在基属性窗口里把DOCK属性改为FillColumns集合编辑器里添加3个成员(ColumnHeader)listview控件在哪里,分别将其名称改为:名称、大小、类型、修改时间。
        2 TreeView控件的树形视图实现
        2.1 在窗体代码类里上方,引用Imports System.IO命名空间,引用的目的是为了简写窗体类中关于驱动器、文件夹和文件的代码。
        2.2 在窗体加载事件中建立一个节点我的电脑,并利用节点nodeTag属性来存放文件的完整地址,便于后面查询。遍历所有驱动器,并将驱动器的名称添加到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(submynodesubmynode.Tag.ToString)
        Next
        2.3 建立一个子程序来添加驱动器下的各个文件夹在TreeView上的节点。
        Private Sub CreateTree(ByVal mynode As TreeNodeByVal path As String)
        Dim dir As DirectoryInfo = New DirectoryInfo(path)
        Dim submynode As New TreeNode
        If dir.Name.Substring(12)= "\" 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(submynodesubmynode.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(12)= "\" 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
        Try
        item = New ListViewItem(subdir.Name0)
        subitem = New ListViewItem.ListViewSubItem()_
        {New ListViewItem.ListViewSubItem(item"文件夹")_
        New ListViewItem.ListViewSubItem(itemsubdir.LastWriteTime.ToString)}
        item.SubItems.AddRange(subitem)
        ListView1.Items.Add(item)
        Catch ex As Exception
        End Try
        End If
        Next
        For Each subdir As DirectoryInfo In dir.GetDirectories
        ‘定义显现节点对应文件夹下的文件(同上)
        …
        End Sub
        4 建立TreeViewNodeMouseClick事件,在该事件中处理图标状态
        Private Sub TreeView1_NodeMouseClick(ByVal sender As ObjectByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs)Handles TreeView1.NodeMouseClick
        Dim mynode As TreeNode = e.Node
        If mynode.IsExpanded = False Then
        mynode.SelectedImageIndex = 0
        Else
        mynode.SelectedImageIndex = 1
        End If
        FilterListView(e.Node)
        End Sub
        5 测试效果如下
        参考文献:
        1 Microsoft公司的MSND Online.
        2 Windows 程序设计(5).方敏,张胜,赵勇,等译.北京:清华大学出版社,2010.
        3 卢镇波,李清.Visual Basic 实用编程百例[M.北京:清华大学出版社,2005.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。