Displaying directories and their contents in ListView : ListView « GUI « VB.Net






Displaying directories and their contents in ListView

Displaying directories and their contents in ListView
 
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO

Public Class MainClass

   Shared Sub Main()
        Dim myform As Form = New FrmListView()
        Application.Run(myform)

   End Sub ' Main

End Class


Public Class FrmListView
   Inherits Form

#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

   ' display labels for current location in directory tree
   Friend WithEvents lblCurrent As Label
   Friend WithEvents lblDisplay As Label

   ' displays contents of current directory
   Friend WithEvents lvwBrowser As ListView

   ' specifies images for file icons and folder icons
   Friend WithEvents ilsFileFolder As ImageList


   'Required by the Windows Form Designer
   Private components As System.ComponentModel.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.
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
      Me.components = New System.ComponentModel.Container()
      Me.ilsFileFolder = New System.Windows.Forms.ImageList(Me.components)
      Me.lvwBrowser = New System.Windows.Forms.ListView()
      Me.lblCurrent = New System.Windows.Forms.Label()
      Me.lblDisplay = New System.Windows.Forms.Label()
      Me.SuspendLayout()
      '
      'ilsFileFolder
      '
      Me.ilsFileFolder.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
      Me.ilsFileFolder.ImageSize = New System.Drawing.Size(16, 16)
      Me.ilsFileFolder.TransparentColor = System.Drawing.Color.Transparent
      '
      'lvwBrowser
      '
      Me.lvwBrowser.Location = New System.Drawing.Point(16, 88)
      Me.lvwBrowser.Name = "lvwBrowser"
      Me.lvwBrowser.RightToLeft = System.Windows.Forms.RightToLeft.No
      Me.lvwBrowser.Size = New System.Drawing.Size(448, 232)
      Me.lvwBrowser.SmallImageList = Me.ilsFileFolder
      Me.lvwBrowser.TabIndex = 2
      Me.lvwBrowser.View = System.Windows.Forms.View.List
      '
      'lblCurrent
      '
      Me.lblCurrent.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
      Me.lblCurrent.ForeColor = System.Drawing.SystemColors.WindowText
      Me.lblCurrent.Location = New System.Drawing.Point(16, 16)
      Me.lblCurrent.Name = "lblCurrent"
      Me.lblCurrent.Size = New System.Drawing.Size(112, 23)
      Me.lblCurrent.TabIndex = 0
      Me.lblCurrent.Text = "Now in Directory:"
      '
      'lblDisplay
      '
      Me.lblDisplay.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
      Me.lblDisplay.ForeColor = System.Drawing.SystemColors.WindowText
      Me.lblDisplay.Location = New System.Drawing.Point(128, 16)
      Me.lblDisplay.Name = "lblDisplay"
      Me.lblDisplay.Size = New System.Drawing.Size(344, 56)
      Me.lblDisplay.TabIndex = 1
      '
      'FrmListView
      '
      Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
      Me.ClientSize = New System.Drawing.Size(488, 341)
      Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lvwBrowser, Me.lblDisplay, Me.lblCurrent})
      Me.Name = "FrmListView"
      Me.Text = "ListViewTest"
      Me.ResumeLayout(False)

   End Sub

#End Region

   Dim currentDirectory As String = Directory.GetCurrentDirectory()

   Private Sub lvwBrowser_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles lvwBrowser.Click
      If lvwBrowser.SelectedItems.Count <> 0 Then
         If lvwBrowser.Items(0).Selected Then

            Dim directoryObject As DirectoryInfo = _
               New DirectoryInfo(currentDirectory)

            If Not (directoryObject.Parent Is Nothing) Then
               LoadFilesInDirectory(directoryObject.Parent.FullName)
            End If
         Else
            Dim chosen As String = lvwBrowser.SelectedItems(0).Text
            If Directory.Exists(currentDirectory & "\" & chosen) Then
               If currentDirectory = "C:\" Then
                  LoadFilesInDirectory(currentDirectory & chosen)
               Else
                  LoadFilesInDirectory(currentDirectory & _
                     "\" & chosen)
               End If
            End If
         End If
         lblDisplay.Text = currentDirectory
      End If
   End Sub

   Public Sub LoadFilesInDirectory _
      (ByVal currentDirectoryValue As String)
      Try
         lvwBrowser.Items.Clear()
         lvwBrowser.Items.Add("Go Up One Level")
         currentDirectory = currentDirectoryValue
         Dim newCurrentDirectory As DirectoryInfo = _
            New DirectoryInfo(currentDirectory)
         Dim directoryArray As DirectoryInfo() = _
            newCurrentDirectory.GetDirectories()

         Dim fileArray As FileInfo() = _
            newCurrentDirectory.GetFiles()
         Dim dir As DirectoryInfo
         For Each dir In directoryArray
            Dim newDirectoryItem As ListViewItem = _
               lvwBrowser.Items.Add(dir.Name)
            newDirectoryItem.ImageIndex = 0
         Next
         Dim file As FileInfo
         For Each file In fileArray
            Dim newFileItem As ListViewItem = _
               lvwBrowser.Items.Add(file.Name)
            newFileItem.ImageIndex = 1    ' set file image
         Next
      Catch exception As UnauthorizedAccessException
         MessageBox.Show("Warning: Some files may " & _
            "not be visible due to " + "permission settings", _
            "Attention", 0, MessageBoxIcon.Warning)
      End Try

   End Sub ' LoadFilesInDirectory

   ' handle load event when Form displayed for first time
   Private Sub FrmListView_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load

      ' set image list
      Dim folderImage As Image = Image.FromFile("figure2.bmp")

      Dim fileImage As Image = Image.FromFile("figure2.bmp")

      ilsFileFolder.Images.Add(folderImage)
      ilsFileFolder.Images.Add(fileImage)

      ' load current directory into browserListView
      LoadFilesInDirectory(currentDirectory)
      lblDisplay.Text = currentDirectory
   End Sub ' FrmListView_Load

End Class
           
         
  








Related examples in the same category

1.ListView Custom sortListView Custom sort
2.Build ListView at run time: update title column textBuild ListView at run time: update title column text
3.Construct ListView at run time: build structure and insert recordsConstruct ListView at run time: build structure and insert records
4.Fill XML data into ListView and add column to ListView at run timeFill XML data into ListView and add column to ListView at run time
5.Large Icon and small Icon for ListView
6.Add Customized Item to ListViewAdd Customized Item to ListView
7.Add Selection Listener to the ListViewAdd Selection Listener to the ListView
8.Add Items to ListViewAdd Items to ListView
9.Set ListView header and fill dataSet ListView header and fill data
10.Drag and Drop Explorer
11.ListView DataReader