Use ListViewItem to display file information

   
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.IO;


class Form1 : Form {
    private System.Collections.Specialized.StringCollection folderCol;

    public Form1() {
        InitializeComponent();

        folderCol = new System.Collections.Specialized.StringCollection();
        CreateHeadersAndFillListView();
        PaintListView(@"C:");
        folderCol.Add(@"C:");
    }

    private void CreateHeadersAndFillListView() {
        ColumnHeader colHead;

        colHead = new ColumnHeader();
        colHead.Text = "Filename";
        this.listViewFilesAndFolders.Columns.Add(colHead); 

        colHead = new ColumnHeader();
        colHead.Text = "Size";
        this.listViewFilesAndFolders.Columns.Add(colHead); 

        colHead = new ColumnHeader();
        colHead.Text = "Last accessed";
        this.listViewFilesAndFolders.Columns.Add(colHead); 
    }

    private void PaintListView(string root) {
        try {
            ListViewItem lvi;
            ListViewItem.ListViewSubItem lvsi;

            if (root.CompareTo("") == 0)
                return;

            DirectoryInfo dir = new DirectoryInfo(root);

            DirectoryInfo[] dirs = dir.GetDirectories(); 
            FileInfo[] files = dir.GetFiles();           

            this.listViewFilesAndFolders.Items.Clear();

            this.labelCurrentPath.Text = root;

            this.listViewFilesAndFolders.BeginUpdate();

            foreach (DirectoryInfo di in dirs) {
                lvi = new ListViewItem();
                lvi.Text = di.Name;
                lvi.ImageIndex = 0;
                lvi.Tag = di.FullName;

                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = "";

                lvi.SubItems.Add(lvsi);

                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = di.LastAccessTime.ToString();
                lvi.SubItems.Add(lvsi);

                this.listViewFilesAndFolders.Items.Add(lvi);
            }

            foreach (FileInfo fi in files) {
                lvi = new ListViewItem();
                lvi.Text = fi.Name;
                lvi.ImageIndex = 1;
                lvi.Tag = fi.FullName;
                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = fi.Length.ToString();
                lvi.SubItems.Add(lvsi);

                lvsi = new ListViewItem.ListViewSubItem();
                lvsi.Text = fi.LastAccessTime.ToString();
                lvi.SubItems.Add(lvsi);

                this.listViewFilesAndFolders.Items.Add(lvi);
            }
            this.listViewFilesAndFolders.EndUpdate();
        } catch (System.Exception err) {
            MessageBox.Show("Error: " + err.Message);
        }
    }

    private void listViewFilesAndFoldes_ItemActivate(object sender, EventArgs e) {
        System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
        string filename = lw.SelectedItems[0].Tag.ToString();
        if (lw.SelectedItems[0].ImageIndex != 0) {
            try {
                System.Diagnostics.Process.Start(filename);
            } catch {
                return;
            }
        } else {
            PaintListView(filename);
            folderCol.Add(filename);
        }
    }

    private void buttonBack_Click(object sender, EventArgs e) {
        if (folderCol.Count > 1) {
            PaintListView(folderCol[folderCol.Count - 2].ToString());
            folderCol.RemoveAt(folderCol.Count - 1);
        } else {
            PaintListView(folderCol[0].ToString());
        }
    }

    private void radioButtonLargeIcon_CheckedChanged(object sender, EventArgs e) {
        RadioButton rdb = (RadioButton)sender;
        if (rdb.Checked)
            this.listViewFilesAndFolders.View = View.LargeIcon;
    }

    private void radioButtonList_CheckedChanged(object sender, EventArgs e) {
        RadioButton rdb = (RadioButton)sender;
        if (rdb.Checked)
            this.listViewFilesAndFolders.View = View.List;
    }

    private void radioButtonSmallIcon_CheckedChanged(object sender, EventArgs e) {
        RadioButton rdb = (RadioButton)sender;
        if (rdb.Checked)
            this.listViewFilesAndFolders.View = View.SmallIcon;
    }

    private void radioButtonDetails_CheckedChanged(object sender, EventArgs e) {
        RadioButton rdb = (RadioButton)sender;
        if (rdb.Checked)
            this.listViewFilesAndFolders.View = View.Details;
    }

    private void radioButtonTile_CheckedChanged(object sender, EventArgs e) {
        RadioButton rdb = (RadioButton)sender;
        if (rdb.Checked)
            this.listViewFilesAndFolders.View = View.Tile;
    }
    private void InitializeComponent() {
        System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("listViewFilesAndFoldes");
        this.labelCurrentPath = new System.Windows.Forms.Label();
        this.listViewFilesAndFolders = new System.Windows.Forms.ListView();
        this.buttonBack = new System.Windows.Forms.Button();
        this.groupBox1 = new System.Windows.Forms.GroupBox();
        this.radioButtonSmallIcon = new System.Windows.Forms.RadioButton();
        this.radioButtonList = new System.Windows.Forms.RadioButton();
        this.radioButtonTile = new System.Windows.Forms.RadioButton();
        this.radioButtonDetails = new System.Windows.Forms.RadioButton();
        this.radioButtonLargeIcon = new System.Windows.Forms.RadioButton();
        this.groupBox1.SuspendLayout();
        this.SuspendLayout();

        this.labelCurrentPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.labelCurrentPath.Location = new System.Drawing.Point(13, 13);
        this.labelCurrentPath.Name = "labelCurrentPath";
        this.labelCurrentPath.Size = new System.Drawing.Size(502, 15);
        this.labelCurrentPath.TabIndex = 0;

        this.listViewFilesAndFolders.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                    | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.listViewFilesAndFolders.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
        listViewItem2
      });
        this.listViewFilesAndFolders.Location = new System.Drawing.Point(13, 35);
        this.listViewFilesAndFolders.Name = "listViewFilesAndFoldes";
        this.listViewFilesAndFolders.Size = new System.Drawing.Size(423, 220);
        this.listViewFilesAndFolders.TabIndex = 1;
        this.listViewFilesAndFolders.View = System.Windows.Forms.View.Details;
        this.listViewFilesAndFolders.ItemActivate += new System.EventHandler(this.listViewFilesAndFoldes_ItemActivate);

        this.buttonBack.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
        this.buttonBack.Location = new System.Drawing.Point(222, 262);
        this.buttonBack.Name = "buttonBack";
        this.buttonBack.TabIndex = 2;
        this.buttonBack.Text = "Back";
        this.buttonBack.Click += new System.EventHandler(this.buttonBack_Click);

        this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
        this.groupBox1.Controls.Add(this.radioButtonSmallIcon);
        this.groupBox1.Controls.Add(this.radioButtonList);
        this.groupBox1.Controls.Add(this.radioButtonTile);
        this.groupBox1.Controls.Add(this.radioButtonDetails);
        this.groupBox1.Controls.Add(this.radioButtonLargeIcon);
        this.groupBox1.Location = new System.Drawing.Point(443, 35);
        this.groupBox1.Name = "groupBox1";
        this.groupBox1.Size = new System.Drawing.Size(97, 220);
        this.groupBox1.TabIndex = 3;
        this.groupBox1.TabStop = false;
        this.groupBox1.Text = "View Mode";

        this.radioButtonSmallIcon.AutoSize = true;
        this.radioButtonSmallIcon.Location = new System.Drawing.Point(7, 44);
        this.radioButtonSmallIcon.Name = "radioButtonSmallIcon";
        this.radioButtonSmallIcon.Size = new System.Drawing.Size(67, 17);
        this.radioButtonSmallIcon.TabIndex = 4;
        this.radioButtonSmallIcon.Text = "SmallIcon";
        this.radioButtonSmallIcon.CheckedChanged += new System.EventHandler(this.radioButtonSmallIcon_CheckedChanged);

        this.radioButtonList.AutoSize = true;
        this.radioButtonList.Location = new System.Drawing.Point(7, 68);
        this.radioButtonList.Name = "radioButtonList";
        this.radioButtonList.Size = new System.Drawing.Size(37, 17);
        this.radioButtonList.TabIndex = 3;
        this.radioButtonList.Text = "List";
        this.radioButtonList.CheckedChanged += new System.EventHandler(this.radioButtonList_CheckedChanged);

        this.radioButtonTile.AutoSize = true;
        this.radioButtonTile.Location = new System.Drawing.Point(7, 116);
        this.radioButtonTile.Name = "radioButtonTile";
        this.radioButtonTile.Size = new System.Drawing.Size(38, 17);
        this.radioButtonTile.TabIndex = 2;
        this.radioButtonTile.Text = "Tile";
        this.radioButtonTile.CheckedChanged += new System.EventHandler(this.radioButtonTile_CheckedChanged);

        this.radioButtonDetails.AutoSize = true;
        this.radioButtonDetails.Checked = true;
        this.radioButtonDetails.Location = new System.Drawing.Point(7, 92);
        this.radioButtonDetails.Name = "radioButtonDetails";
        this.radioButtonDetails.Size = new System.Drawing.Size(53, 17);
        this.radioButtonDetails.TabIndex = 1;
        this.radioButtonDetails.TabStop = true;
        this.radioButtonDetails.Text = "Details";
        this.radioButtonDetails.CheckedChanged += new System.EventHandler(this.radioButtonDetails_CheckedChanged);

        this.radioButtonLargeIcon.AutoSize = true;
        this.radioButtonLargeIcon.Location = new System.Drawing.Point(7, 20);
        this.radioButtonLargeIcon.Name = "radioButtonLargeIcon";
        this.radioButtonLargeIcon.Size = new System.Drawing.Size(69, 17);
        this.radioButtonLargeIcon.TabIndex = 0;
        this.radioButtonLargeIcon.Text = "LargeIcon";
        this.radioButtonLargeIcon.CheckedChanged += new System.EventHandler(this.radioButtonLargeIcon_CheckedChanged);

        this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
        this.ClientSize = new System.Drawing.Size(550, 291);
        this.Controls.Add(this.groupBox1);
        this.Controls.Add(this.buttonBack);
        this.Controls.Add(this.listViewFilesAndFolders);
        this.Controls.Add(this.labelCurrentPath);
        this.Name = "Form1";
        this.Text = "ListView";
        this.groupBox1.ResumeLayout(false);
        this.groupBox1.PerformLayout();
        this.ResumeLayout(false);
        this.PerformLayout();

    }
    private System.Windows.Forms.Label labelCurrentPath;
    private System.Windows.Forms.ListView listViewFilesAndFolders;
    private System.Windows.Forms.Button buttonBack;
    private System.Windows.Forms.GroupBox groupBox1;
    private System.Windows.Forms.RadioButton radioButtonLargeIcon;
    private System.Windows.Forms.RadioButton radioButtonDetails;
    private System.Windows.Forms.RadioButton radioButtonTile;
    private System.Windows.Forms.RadioButton radioButtonList;
    private System.Windows.Forms.RadioButton radioButtonSmallIcon;

    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }

}