VB.Net Tutorial/GUI Applications/File Tree

Материал из VB Эксперт
Перейти к: навигация, поиск

File Treeview

<source lang="vbnet">Imports System.ruponentModel Imports System.Drawing Imports System.Runtime.InteropServices Imports System.Windows.Forms Imports System.Windows.Forms.Design Imports System.IO public class TreeViewFileFolder

  public Shared Sub Main
       Application.Run(New Form1)
  End Sub

End class

Public Class Form1

   Inherits System.Windows.Forms.Form
   Public Sub New()
       MyBase.New()
       InitializeComponent()
   End Sub
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing Then
           If Not (components Is Nothing) Then
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   Private components As System.ruponentModel.IContainer
   Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.TreeView1 = New System.Windows.Forms.TreeView
       Me.SuspendLayout()
       "
       "TreeView1
       "
       Me.TreeView1.Location = New System.Drawing.Point(16, 15)
       Me.TreeView1.Name = "TreeView1"
       Me.TreeView1.Size = New System.Drawing.Size(544, 273)
       Me.TreeView1.TabIndex = 0
       "
       "Form1
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(8, 18)
       Me.ClientSize = New System.Drawing.Size(587, 309)
       Me.Controls.Add(Me.TreeView1)
       Me.ResumeLayout(False)
   End Sub
   Public Function BuildDirectory(ByVal aNode As TreeNode) As String
       Dim theNode As TreeNode = aNode
       Dim strDir As String = ""
       While Not (theNode Is Nothing)
           If theNode.Text.Substring((theNode.Text.Length - 1)) <> "\" Then
               strDir = "\" + strDir
           End If
           strDir = theNode.Text + strDir
           theNode = theNode.Parent
       End While
       Return strDir
   End Function
   Public Sub PopulateNode(ByVal aNode As TreeNode, ByVal strDir As String)
       Me.Cursor = Cursors.WaitCursor
       Dim Dir As Directory 
       Dim count As Integer = 0
       Dim M_STRfILTER = "*.*"
       Dim i As Integer
       For i = 0 To (Dir.GetDirectories(strDir).Length) - 1
           Dim ChildNode As New TreeNode(Dir.GetDirectories(strDir)(i).ToString, 1, 0)
           i = aNode.Nodes.Add(ChildNode)
           count += 1
       Next i
       For i = 0 To (Dir.GetFiles(strDir, M_STRfILTER).Length) - 1
           Dim ChildNode As New TreeNode(Dir.GetFiles(strDir, M_STRfILTER)(i).ToString, 2, 2)
           i = aNode.Nodes.Add(ChildNode)
       Next i
       aNode.Expand()
       Me.Cursor = Cursors.Arrow
   End Sub
   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim oNode As New System.Windows.Forms.TreeNode()
       Try
           oNode.ImageIndex = 0
           oNode.SelectedImageIndex = 0
           oNode.Text = "C:\"
           TreeView1.Nodes.Add(oNode)
           "oNode.Nodes.Add("")
       Catch ex As Exception
           Console.WriteLine("Cannot create initial node:" & ex.ToString)
       End Try
   End Sub
   Private Sub TreeView1_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
       Text = e.Node.Text
       If Directory.Exists(e.Node.Text) = True Then PopulateNode(e.Node, e.Node.Text)
       If File.Exists(e.Node.Text) = True Then MsgBox(e.Node.Text)
   End Sub
   

End Class</source>

Generate File tree

<source lang="vbnet">Imports System Imports System.IO Imports System.Windows.Forms public class DisplayFileInfoExplore

  public Shared Sub Main
       Application.Run(New displayFileInfo)
  End Sub

End class Public Class displayFileInfo

   Inherits System.Windows.Forms.Form
  1. Region " Windows Form Designer generated code "
   Public Sub New()
       MyBase.New()
       "This call is required by the Windows Form Designer.
       InitializeComponent()
       "Add any initialization after the InitializeComponent() call
   End Sub
   "Form overrides dispose to clean up the component list.
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing Then
           If Not (components Is Nothing) Then
               components.Dispose()
           End If
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   Friend WithEvents pathToLoadFrom As System.Windows.Forms.TextBox
   Friend WithEvents loadFileList As System.Windows.Forms.Button
   Friend WithEvents browseForFolder As System.Windows.Forms.Button
   Friend WithEvents browseDialog As System.Windows.Forms.FolderBrowserDialog
   Friend WithEvents fileList As System.Windows.Forms.TreeView
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
       Me.pathToLoadFrom = New System.Windows.Forms.TextBox
       Me.loadFileList = New System.Windows.Forms.Button
       Me.browseForFolder = New System.Windows.Forms.Button
       Me.browseDialog = New System.Windows.Forms.FolderBrowserDialog
       Me.fileList = New System.Windows.Forms.TreeView
       Me.SuspendLayout()
       "
       "pathToLoadFrom
       "
       Me.pathToLoadFrom.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.pathToLoadFrom.Location = New System.Drawing.Point(16, 201)
       Me.pathToLoadFrom.Name = "pathToLoadFrom"
       Me.pathToLoadFrom.Size = New System.Drawing.Size(128, 20)
       Me.pathToLoadFrom.TabIndex = 1
       Me.pathToLoadFrom.Text = "c:\"
       "
       "loadFileList
       "
       Me.loadFileList.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.loadFileList.Location = New System.Drawing.Point(188, 200)
       Me.loadFileList.Name = "loadFileList"
       Me.loadFileList.Size = New System.Drawing.Size(96, 23)
       Me.loadFileList.TabIndex = 2
       Me.loadFileList.Text = "Load File List"
       "
       "browseForFolder
       "
       Me.browseForFolder.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.browseForFolder.Location = New System.Drawing.Point(153, 200)
       Me.browseForFolder.Name = "browseForFolder"
       Me.browseForFolder.Size = New System.Drawing.Size(27, 23)
       Me.browseForFolder.TabIndex = 3
       Me.browseForFolder.Text = "..."
       "
       "fileList
       "
       Me.fileList.ImageIndex = -1
       Me.fileList.Location = New System.Drawing.Point(16, 8)
       Me.fileList.Name = "fileList"
       Me.fileList.SelectedImageIndex = -1
       Me.fileList.Size = New System.Drawing.Size(264, 184)
       Me.fileList.TabIndex = 4
       "
       "FileInfo
       "
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(296, 230)
       Me.Controls.Add(Me.fileList)
       Me.Controls.Add(Me.browseForFolder)
       Me.Controls.Add(Me.loadFileList)
       Me.Controls.Add(Me.pathToLoadFrom)
       Me.Name = "FileInfo"
       Me.Text = "displayFileInfo"
       Me.ResumeLayout(False)
   End Sub
  1. End Region
   Private Sub browseForFolder_Click( _
           ByVal sender As System.Object, _
           ByVal e As System.EventArgs) _
           Handles browseForFolder.Click
       If IO.Directory.Exists(pathToLoadFrom.Text) Then
           Me.browseDialog.SelectedPath = Me.pathToLoadFrom.Text
       End If
       If Me.browseDialog.ShowDialog = DialogResult.OK Then
           Me.pathToLoadFrom.Text = Me.browseDialog.SelectedPath
       End If
   End Sub
   Private Sub loadFileList_Click( _
           ByVal sender As System.Object, _
           ByVal e As System.EventArgs) _
           Handles loadFileList.Click
       GetFileList(Me.pathToLoadFrom.Text)
   End Sub
   Public Overloads Sub GetFileList(ByVal sourcePath As String)
       Dim nodes As TreeNodeCollection = Me.fileList.Nodes
       GetFileList(sourcePath, nodes)
   End Sub
   Public Overloads Sub GetFileList( _
           ByVal sourcePath As String, _
           ByVal nodes As TreeNodeCollection)
       nodes.Clear()
       Try
           For Each d As String In _
                   Directory.GetDirectories(sourcePath)
               Dim dInfo As New DirectoryInfo(d)
               Dim dirNode As New DirectoryTreeNode(dInfo)
               nodes.Add(dirNode)
               GetFileList(Path.rubine(sourcePath, d), _
                   dirNode.Nodes)
           Next
           For Each f As String In _
                   Directory.GetFiles(sourcePath)
               Dim fInfo As New FileInfo(f)
               Dim fileNode As New FileTreeNode(fInfo)
               nodes.Add(fileNode)
           Next
       Catch ex As Exception
           Console.WriteLine(ex.Message)
       End Try
   End Sub
   Private Sub fileList_DoubleClick(ByVal sender As Object, _
           ByVal e As System.EventArgs) _
           Handles fileList.DoubleClick
       If Not fileList.SelectedNode Is Nothing Then
           Dim tn As TreeNode = fileList.SelectedNode
           If TypeOf tn Is DirectoryTreeNode Then
               Dim dtn As DirectoryTreeNode
               dtn = DirectCast(tn, DirectoryTreeNode)
               MsgBox("Directory Selected: " & dtn.fullName)
           ElseIf TypeOf tn Is FileTreeNode Then
               Dim ftn As FileTreeNode
               ftn = DirectCast(tn, FileTreeNode)
               MsgBox("File Selected. Created: " _
                   & ftn.creationTime)
           End If
       End If
   End Sub

End Class

Public Class FileTreeNode

   Inherits TreeNode
   Protected m_creationTime As Date
   Protected m_fullName As String
   Protected m_lastAccessTime As Date
   Protected m_lastWriteTime As Date
   Protected m_length As Long
   Public Sub New(ByVal fInfo As FileInfo)
       With fInfo
           m_creationTime = .CreationTime
           m_fullName = .FullName
           m_lastAccessTime = .LastAccessTime
           m_lastWriteTime = .LastWriteTime
           m_length = .Length
           Text = .Name
       End With
   End Sub
   Public Sub New()
   End Sub
   Public Property creationTime() As Date
       Get
           Return m_creationTime
       End Get
       Set(ByVal Value As Date)
           m_creationTime = Value
       End Set
   End Property
   Public Property fullName() As String
       Get
           Return m_fullName
       End Get
       Set(ByVal Value As String)
           m_fullName = Value
       End Set
   End Property
   Public Property lastAccessTime() As Date
       Get
           Return m_lastAccessTime
       End Get
       Set(ByVal Value As Date)
           m_lastAccessTime = Value
       End Set
   End Property
   Public Property lastWriteTime() As Date
       Get
           Return m_lastWriteTime
       End Get
       Set(ByVal Value As Date)
           m_lastWriteTime = Value
       End Set
   End Property
   Public Property length() As Long
       Get
           Return m_length
       End Get
       Set(ByVal Value As Long)
           m_length = Value
       End Set
   End Property

End Class

Public Class DirectoryTreeNode

   Inherits FileTreeNode
   Public Sub New(ByVal dInfo As DirectoryInfo)
       With dInfo
           m_creationTime = .CreationTime
           m_fullName = .FullName
           m_lastAccessTime = .LastAccessTime
           m_lastWriteTime = .LastWriteTime
           m_length = 0
           Text = .Name
       End With
   End Sub

End Class</source>