extends ListView : ListView « System.Windows.Forms « C# / C Sharp by API






extends ListView

 

using System;
using System.Diagnostics;          // For Process.Start
using System.Drawing;
using System.IO;
using System.Windows.Forms;

class FileListView : ListView {
    string strDirectory;

    public FileListView() {
        View = View.Details;

        ImageList imglst = new ImageList();
        imglst.Images.Add(new Bitmap(GetType(), "DOC.BMP"));
        imglst.Images.Add(new Bitmap(GetType(), "EXE.BMP"));

        SmallImageList = imglst;
        LargeImageList = imglst;

        Columns.Add("Name", 100, HorizontalAlignment.Left);
        Columns.Add("Size", 100, HorizontalAlignment.Right);
        Columns.Add("Modified", 100, HorizontalAlignment.Left);
        Columns.Add("Attribute", 100, HorizontalAlignment.Left);
    }
    public void ShowFiles(string strDirectory) {
        this.strDirectory = strDirectory;

        Items.Clear();
        DirectoryInfo dirinfo = new DirectoryInfo(strDirectory);
        FileInfo[] afileinfo;

        try {
            afileinfo = dirinfo.GetFiles();
        } catch {
            return;
        }

        foreach (FileInfo fi in afileinfo) {
            ListViewItem lvi = new ListViewItem(fi.Name);

            if (Path.GetExtension(fi.Name).ToUpper() == ".EXE")
                lvi.ImageIndex = 1;
            else
                lvi.ImageIndex = 0;

            lvi.SubItems.Add(fi.Length.ToString("N0"));
            lvi.SubItems.Add(fi.LastWriteTime.ToString());

            string strAttr = "";

            if ((fi.Attributes & FileAttributes.Archive) != 0)
                strAttr += "A";

            if ((fi.Attributes & FileAttributes.Hidden) != 0)
                strAttr += "H";

            if ((fi.Attributes & FileAttributes.ReadOnly) != 0)
                strAttr += "R";

            if ((fi.Attributes & FileAttributes.System) != 0)
                strAttr += "S";

            lvi.SubItems.Add(strAttr);

            Items.Add(lvi);
        }
    }
    protected override void OnItemActivate(EventArgs ea) {
        base.OnItemActivate(ea);

        foreach (ListViewItem lvi in SelectedItems) {
            try {
                Process.Start(Path.Combine(strDirectory, lvi.Text));
            } catch {
                continue;
            }
        }
    }
}


class ExplorerLike : Form {
    FileListView filelist;
    MenuItemView mivChecked;

    public static void Main() {
        Application.Run(new ExplorerLike());
    }
    public ExplorerLike() {
        BackColor = SystemColors.Window;
        ForeColor = SystemColors.WindowText;

        filelist = new FileListView();
        filelist.Parent = this;
        filelist.Dock = DockStyle.Fill;

        Splitter split = new Splitter();
        split.Parent = this;
        split.Dock = DockStyle.Left;
        split.BackColor = SystemColors.Control;

        Menu = new MainMenu();
        Menu.MenuItems.Add("&View");

        string[] astrView = { "Lar&ge Icons", "S&mall Icons", 
                                "&List", "&Details" };
        View[] aview = { View.LargeIcon, View.SmallIcon, 
                           View.List, View.Details };
        EventHandler eh = new EventHandler(MenuOnView);

        for (int i = 0; i < 4; i++) {
            MenuItemView miv = new MenuItemView();
            miv.Text = astrView[i];
            miv.View = aview[i];
            miv.RadioCheck = true;
            miv.Click += eh;

            if (i == 3)         // Default == View.Details
               {
                mivChecked = miv;
                mivChecked.Checked = true;
                filelist.View = mivChecked.View;
            }
            Menu.MenuItems[0].MenuItems.Add(miv);
        }
        Menu.MenuItems[0].MenuItems.Add("-");

        MenuItem mi = new MenuItem("&Refresh",
                            new EventHandler(MenuOnRefresh), Shortcut.F5);
        Menu.MenuItems[0].MenuItems.Add(mi);
    }
    void DirectoryTreeViewOnAfterSelect(object obj, TreeViewEventArgs tvea) {
        filelist.ShowFiles(tvea.Node.FullPath);
    }
    void MenuOnView(object obj, EventArgs ea) {
        mivChecked.Checked = false;
        mivChecked = (MenuItemView)obj;
        mivChecked.Checked = true;

        filelist.View = mivChecked.View;
    }
    void MenuOnRefresh(object obj, EventArgs ea) {
    }
}
class MenuItemView : MenuItem {
    public View View;
}

   
  








Related examples in the same category

1.ListView.Click
2.ListView.ColumnClick
3.ListView.DragDrop
4.ListView.ItemActivate
5.ListView.Items
6.ListView.LargeImageList
7.ListView.MouseUp
8.ListView.Sorting
9.ListView.View