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()); } }