Mega Code Archive

 
Categories / VB.Net / GUI
 

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