文件与资源管理

Imports System.IO
Public Class frmexplorer
    Inherits System.Windows.Forms.Form
    Dim strCurrentPath As String
    '定义当前目录路径变量
    Dim strCurrentfile As String
    '定义当前文件名变量
    Dim tvCurrentNode As TreeNode
    '定义当前目录在树节点中位置的变量
    Dim copySourceFile As String, copyFileName As String
    '定义要拷贝的源文件路径全名,以及该文件文件名的变量
    Dim contextMenuFocus As Integer
    '定义用来确定上下文菜单的弹出位置(在Treeview1还是Listview1)的变量
    Dim bModify As Boolean = False
    Dim sEditFileName As String

#Region " Windows 窗体设计器生成的代码 "
   '此部分代码省略不写,因为按上述步骤1及步骤2操作后,这部分代码会自动生成
#End Region

#Region "浏览磁盘、文件夹及文件的操作,熟悉常用控件 - TreeView和ListView"
'此部分代码见第5个步骤的代码
#End Region
End Class
5. 为了能够浏览逻辑盘、文件夹,在TreeView1_AfterSelect事件中根据用户所选择节点的类型决定调用不同的自定义函数,如果用户选择的是根节点则调用自定义函数DispDriver(),如果用户选择的是子节点则调用DispDir()自定义函数。为了在用户选择子节点时能够在ListView控件中显示此子节点(文件夹)中的文件,在TreeView1控件中列举完此子节点(文件夹)下文件夹之后再调用DispFile()自定义的函数,在ListView控件中列表显示此子节点(文件夹)中的文件。
调用自定义函数的程序及三个自定义函数DispDriver(),DispDir(),DispFile()的程序代码如下:
#Region "浏览磁盘、文件夹及文件的操作,熟悉常用控件 - TreeView和ListView"
Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As _
System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
        If e.Node.Text = "我的电脑" Then
            '列举驱动器
            DispDriver(e.Node)
        Else
            '列举子文件夹。
            DispDir(e.Node)
        End If
    End Sub

    '列举驱动器
    Private Sub DispDriver(ByVal node As TreeNode)
        Dim drv As String
        Dim i As Integer
        If node.Nodes.Count = 0 Then
            '下面的循环是遍历微机中的逻辑盘并在树节点中增加这些逻辑盘符
            For Each drv In Directory.GetLogicalDrives
                TreeView1.SelectedNode = node
                Dim tmpNode As New TreeNode
                'tmpNode.Text = drv.Substring(0, drv.Length)
                tmpNode.Text = drv   '将逻辑盘符赋值给节点实例tmpNode的属性Text
                tmpNode.Tag = drv
                tmpNode.ImageIndex = 1
                tmpNode.SelectedImageIndex = 1
                TreeView1.SelectedNode.Nodes.Add(tmpNode) '在树节点中增加逻辑盘符
                TreeView1.SelectedNode.Nodes(i).EnsureVisible()
'在树节点中刚增加逻辑盘符节点可见
                i = i + 1
            Next
        End If
    End Sub

    '列举子文件夹名称
    Private Sub DispDir(ByVal node As TreeNode)
        Try
            TreeView1.SelectedNode = node
            Dim DirectoryPath As String = node.Tag.ToString()
            If node.Nodes.Count = 0 Then
                '下面的条件判断是保证所选定的目录路径名的最后一个字符为 "/"
                If DirectoryPath.Substring(DirectoryPath.Length - 1) <> "/" Then
                    DirectoryPath += "/"
                End If
                strCurrentPath = DirectoryPath         '保存当前选定的文件夹的目录路径
                tvCurrentNode = TreeView1.SelectedNode '保存当前选定的树节点中位置
                Dim Dir As String
                Dim i As Integer
                '下面的循环是遍历选定的逻辑盘或文件下的子文件夹并在树节点中增加这些子文件夹
                For Each Dir In Directory.GetDirectories(DirectoryPath)
                    Dim tmpNode As New TreeNode
tmpNode.Text = Dir.Substring(Dir.LastIndexOf("/") + 1)
'取出选定文件夹下的子文件夹的名称
                    tmpNode.Tag() = Dir
                    tmpNode.ImageIndex = 2
tmpNode.SelectedImageIndex = 3
'当在树节点中选定某文件夹,显示索引号为3的图形(即是打开文件夹的图形)
TreeView1.SelectedNode.Nodes.Add(tmpNode)
'在树节点中增加选定文件夹下的子文件夹的名称
TreeView1.SelectedNode.Nodes(i).EnsureVisible()
'在树节点中刚增加的子文件夹节点可见
                    i += 1
                Next
            End If
            ListView1.Update()
            DispFile(node) '列举完文件夹之后再列表显示这个文件夹中的文件。
        Catch ex As Exception
        End Try
    End Sub

    '列举所选定文件夹下面的文件的文件名称及最后访问时间
    Private Sub DispFile(ByVal node As TreeNode)
        Dim DirectoryPath As String = node.Tag.ToString()
        '下面的条件判断是保证所选定的目录路径名的最后一个字符为 "/"
        If DirectoryPath.Substring(DirectoryPath.Length - 1) <> "/" Then
            DirectoryPath += "/"
        End If
        Try
ListView1.Items.Clear()
'清除列表框中的所有项目以便显示所选定文件夹下面的文件信息
            Dim tmpFile As String
            Dim lvItem As ListViewItem
            '下面的循环是遍历选定的目录下的文件并在列表框中显示
            For Each tmpFile In Directory.GetFiles(DirectoryPath)
                lvItem = New ListViewItem(Path.GetFileName(tmpFile))   '文件名称
                lvItem.SubItems.Add(File.GetLastAccessTime(tmpFile))
'为文件名称增加子项目(最后访问时间)
                ListView1.Items.Add(lvItem)
             '将文件名称这个项目加载到ListView中(它的子项目在第二列显示)
            Next
            ListView1.Update()
        Catch ex As Exception
        End Try
    End Sub
#End Region1. TreeView 控件的主要属性
Nodes集合属性的功能说明
属性名 属性说明
FirstNode 属性 FirstNode返回当前节点的第一个子节点。如果当前节点没有子节点,则 FirstNode 属性返回空(Nothing)。
LastNode 属性 LastNode 返回当前节点的最后一个子节点。如果当前节点没有子节点,则 LastNode 属性返回空(Nothing)。
NodeFont 属性 返回或设置当前节点的字体
PrevVisbleNode 属性 返回当前节点的上一个可见节点
PrevNode 属性 返回当前节点的上一个节点(无论该节点是否可见)
NextVisbleNode 属性 返回当前节点的下一个可见节点
NextNode 属性 返回当前节点的下一个节点(无论该节点是否可见)
Parent 属性 返回当前节点的父节点
IsExpanded 属性 返回当前节点是否已经展开
IsSelected 属性 返回当前节点是否被选中
FullPath 属性 返回该节点的的完整路径

Nodes属性是集合属性,即当前节点的子节点Nodes属性与表6-2相同。
(2)SelectedNode属性
SelectedNode属性用来设置或返回当前被选中的节点,它也是一个集合属性,它的集合属性的子属性和方法与Nodes集合属性的子属性和方法基本相同。
用编程的方式实现将 TreeView 控件的 ImageList 属性设置为希望使用的ImageList 控件的代码如下:
TreeView1.ImageList = ImageList1
①ImageIndex 属性
只有设置TreeView 控件的ImageList属性与ImageList 控件相关联后,才能设置ImageIndex 属性。
ImageIndex 属性为TreeView 控件中的节点设置默认图像, ImageIndex 属性确定为正常和展开状态下的节点显示的图像。节点旁边显示图像由ImageIndex 属性值从TreeView 控件的 ImageList 属性中命名的 ImageList 控件获取图像。
②SelectedImageIndex 属性
SelectedImageIndex 属性确定为选定状态下的节点显示的图像。选定状态下节点旁边显示图像由SelectedImageIndex属性值从TreeView 控件的 ImageList 属性中命名的 ImageList 控件获取图像。
ImageIndex 属性,SelectedImageIndex属性可在代码中设置,也可在"树节点编辑器"中设置(如图6-4)。
(4)CheckBoxes 属性
TreeView 控件的 CheckBoxes 属性的功能可以决定是否在节点旁显示复选框;当该属性设置为 True,则在显示树视图时,节点旁边带有复选框,此时,用户可以通过单击鼠标选中或取消节点旁的复选框以决定节点是显示或清除;当然用户也可以通过编程的方式在程序中将节点的 Checked 属性设置为 true 或 false以决定节点是显示或清除。
(5)Indent属性
Indent属性用来设置父节点与子节点之间的水平缩进距离。
(6)LabelEdit属性
LabelEdit属性用来设置是否可以编辑节点的标签文本。
(7)PathSeparator属性
PathSeparator属性获取或设置节点路径所使用的分隔符串,缺省的分隔符为"/"。
(8)Scrollable属性
Scrollable属性获取或设置当TreeView 控件中的节点超出边界时是否添加滚动条,缺省值为True。
(9)Sorted属性
Sorted属性获取或设置是否将TreeView控件中的节点按字母顺序排序。
(10)VisibleCount属性
VisibleCount 返回TreeView控件中完全可见的树节点的数目,该属性是一个只读属性。
(11)HotTracking属性
HotTracking 返回或设置当鼠标指针移过树节点标签时,树节点标签是否具有超级链接的外观。
(12)ShowLines属性
ShowLines属性返回或设置是否显示在TreeView控件的父子节点之间的关系线,缺省值为True。
(13)ShowPlusMinus属性
ShowPlusMinus属性返回或设置是否在包含有子节点的父节点前显示加号 (+) 和减号 (-) 按钮,缺省值为True。加号 (+) 表示该项目没有展开,单击加号 (+) 可以展开项目,此时显示减号 (-),单击减号 (-)将折叠该项目,减号 (-)又变成加号 (+) 。
(14)ShowRootLines属性
ScrollableShowRootLines属性返回或设置是否显示TreeView控件根节点之间连线,缺省值为True。

ShowLines属性、ShowPlusMinus属性、ShowRootLines属性最好保留它们的缺省属性值,因为这三个属性值都为True时,父节点和子节点的树状结构关系会显示的清晰明了。

2. TreeView 控件常用事件
(1)BeforeSelect事件和AfterSelect事件
在选中节点"前","后"触发。AfterSelect事件是在设计器上双击TreeView 控件默认打开的事件,也是最常用的事件(案例6-1使用了TreeView 控件的AfterSelect事件)。
(2)BeforeCollapse事件和AfterCollapse事件
当节点折叠"前","后"触发。当子节点展开的时候,单击父节点使子节点收敛前后分别触发BeforeCollapse事件和AfterCollapse事件。
(3)BeforeExpand事件和AfterExpand事件
这两个事件与BeforeCollapse事件和AfterCollapse事件刚好相反,BeforeExpand事件和AfterExpand事件分别在节点展开"前","后"触发。
(4)AfterLabelEdit事件和BeforeLabelEdit事件
这两个事件在编辑节点的标签文本"前","后"触发。
    (5)BeforeSelect事件和AfterSelect事件
这两个事件在选定节点"前","后"触发。
(6)BeforeCheck事件和AfterCheck事件
当TreeView 控件的CheckBoxes 属性设置为 True时,当选中节点前的复选框"前","后"触发。
3. TreeView 控件常用方法
(1)CollapseAll方法
CollapseAll 方法可以将所有TreeView控件中展开的节点折叠起来。
调用的格式为:TreeView1. CollapseAll()
(2)ExpandAll方法
ExpandAll方法可以将所有TreeView控件中折叠的节点都展开。
调用的格式为:TreeView1. ExpandAll ()
(3)GetNodeAt方法
GetNodeAt方法可以检索位于指定位置的节点。
调用的格式为:TreeView1. GetNodeAt(x as integer, y as integer)
(4)GetNodeCount方法
GetNodeCount方法可以返回TreeView控件的节点数,返回TreeView控件的节点数根据调用此方法时传递的逻辑参数值的不同而不同。如果调用此方法时传递的逻辑参数值为True,则返回的节点数是包括子节点的;如果调用此方法时传递的逻辑参数值为False,则返回的节点数是不包括子节点的;
调用的格式为:TreeView1.GetNodeCount(IncludeSubtrees as Bollean)

   End Class

 

http://hi.baidu.com/jonesvale/blog/item/0fda53de50dd481b4954038c.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值