VB.Net Tutorial/GUI Applications/File Listview

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

File Listview

"Visual Basic.Net JingCai Programming 100 Examples
"Author: Yong Zhang
"Publisher: Water Publisher China
"ISBN: 750841156

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Imports System.IO
public class FileListView
   public Shared Sub Main
        Application.Run(New Form1)
   End Sub
End class

Public Class Form1
    Dim nIndex As Integer = 0
    Private Sub CreateMyListView(ByVal dirpath As String)
        Dim hImgSmall As IntPtr
        Dim hImgLarge As IntPtr
        Dim shinfo As FileInfoClass.SHFILEINFO = New FileInfoClass.SHFILEINFO()
        ListView1.Clear()
        ImageListSmall.Images.Clear()
        ImageListLarge.Images.Clear()
        nIndex = 0
        ListView1.Columns.Add("File Name", 200, HorizontalAlignment.Left)
        ListView1.Columns.Add("Size", 100, HorizontalAlignment.Left)
        ListView1.Columns.Add("Date", 100, HorizontalAlignment.Left)
        ListView1.Columns.Add("Attribute", 100, HorizontalAlignment.Center)
        ListView1.LargeImageList = imageListLarge
        ListView1.SmallImageList = imageListSmall
        ListView1.View = View.Details
        ListView1.LabelEdit = True
        ListView1.AllowColumnReorder = True
        ListView1.CheckBoxes = True
        ListView1.FullRowSelect = True
        ListView1.GridLines = True
        ListView1.Sorting = SortOrder.Ascending
        Dim FilesInDir As String() = Directory.GetFiles(dirpath, "*.*")
        Dim SFile As String
        Dim item1 As New ListViewItem("", 0)
        item1.SubItems.Add("1")
        item1.SubItems.Add("2")
        item1.SubItems.Add("3")
        Dim ctdate As Date
        Dim fAttr As FileAttribute
        For Each SFile In FilesInDir
            ctdate = IO.File.GetCreationTime(SFile)
            fAttr = IO.File.GetAttributes(SFile)
            shinfo.szDisplayName = New String(Chr(0), 260)
            shinfo.szTypeName = New String(Chr(0), 80)
            hImgSmall = FileInfoClass.SHGetFileInfo(SFile, 0, shinfo, _
                                    Marshal.SizeOf(shinfo), _
                                    FileInfoClass.SHGFI_ICON Or FileInfoClass.SHGFI_SMALLICON)
            ImageListSmall.Images.Add(System.Drawing.Icon.FromHandle(shinfo.hIcon))       "Add icon to smallimageList.
            hImgLarge = FileInfoClass.SHGetFileInfo(SFile, 0, shinfo, _
                                            Marshal.SizeOf(shinfo), _
                                            FileInfoClass.SHGFI_ICON Or FileInfoClass.SHGFI_LARGEICON)
            ImageListLarge.Images.Add(System.Drawing.Icon.FromHandle(shinfo.hIcon))       "Add icon to LargeimageList.
            ListView1.Items.Add(New ListViewItem(New String() {SFile, CStr(FileLen(SFile)), ctdate.ToString, fAttr.ToString}, nIndex))
            nIndex = nIndex + 1
        Next
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim disks As String() = Directory.GetLogicalDrives
        Dim Sdisk As String
        ComboBox1.Items.Clear()
        For Each Sdisk In disks
            ComboBox1.Items.Add(Sdisk)
        Next
    End Sub
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        CreateMyListView(ComboBox1.Text)
    End Sub
End Class
Public Class FileInfoClass
    Public Structure SHFILEINFO
        Public hIcon As IntPtr            
        Public iIcon As Integer           
        Public dwAttributes As Integer    
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
        Public szDisplayName As String
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _
        Public szTypeName As String
    End Structure
    Public Declare Auto Function SHGetFileInfo Lib "shell32.dll" _
            (ByVal pszPath As String, _
             ByVal dwFileAttributes As Integer, _
             ByRef psfi As SHFILEINFO, _
             ByVal cbFileInfo As Integer, _
             ByVal uFlags As Integer) As IntPtr
    Public Const SHGFI_ICON = &H100
    Public Const SHGFI_SMALLICON = &H1
    Public Const SHGFI_LARGEICON = &H0    " Large icon
End Class
<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form
    "Form overrides dispose to clean up the component list.
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        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.
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.ruponents = New System.ruponentModel.Container
        Me.ruboBox1 = New System.Windows.Forms.ruboBox
        Me.ListView1 = New System.Windows.Forms.ListView
        Me.ImageListSmall = New System.Windows.Forms.ImageList(Me.ruponents)
        Me.ImageListLarge = New System.Windows.Forms.ImageList(Me.ruponents)
        Me.SuspendLayout()
        "
        "ComboBox1
        "
        Me.ruboBox1.FormattingEnabled = True
        Me.ruboBox1.Location = New System.Drawing.Point(12, 3)
        Me.ruboBox1.Name = "ComboBox1"
        Me.ruboBox1.Size = New System.Drawing.Size(413, 20)
        Me.ruboBox1.TabIndex = 0
        "
        "ListView1
        "
        Me.ListView1.Location = New System.Drawing.Point(12, 29)
        Me.ListView1.Name = "ListView1"
        Me.ListView1.Size = New System.Drawing.Size(413, 207)
        Me.ListView1.TabIndex = 1
        Me.ListView1.UseCompatibleStateImageBehavior = False
        "
        "ImageListSmall
        "
        Me.ImageListSmall.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
        Me.ImageListSmall.ImageSize = New System.Drawing.Size(16, 16)
        Me.ImageListSmall.TransparentColor = System.Drawing.Color.Transparent
        "
        "ImageListLarge
        "
        Me.ImageListLarge.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
        Me.ImageListLarge.ImageSize = New System.Drawing.Size(16, 16)
        Me.ImageListLarge.TransparentColor = System.Drawing.Color.Transparent
        "
        "Form1
        "
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(437, 246)
        Me.Controls.Add(Me.ListView1)
        Me.Controls.Add(Me.ruboBox1)
        Me.ResumeLayout(False)
    End Sub
    Friend WithEvents ComboBox1 As System.Windows.Forms.ruboBox
    Friend WithEvents ListView1 As System.Windows.Forms.ListView
    Friend WithEvents ImageListSmall As System.Windows.Forms.ImageList
    Friend WithEvents ImageListLarge As System.Windows.Forms.ImageList
End Class