ListView Directory

Directory を検索して「"名前", "更新日付", "サイズ"」を表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. Directory を検索して ListView に表示してみましょう。
    ListView に Column を設定する に準じてプロジェクトを作成して下さい。
  2. using で System.IO を設定して下さい。
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO;
    
  3. プログラムの先頭で、カラムの幅と見出しを定義します。
    public class MyForm : Form
    {
        private ListView listView1;
        int[]       width = { 240, 120, 80 };
        string[]    head = { "名前", "更新日付", "サイズ" };
    
  4. MyForm の Constructor から InitializeComponent() に続いて InitializeListView() を呼び出します。
    Load をデリゲートして ListBox に登録するので、イベントハンドラ(MyForm_Load)を設定して下さい。
        public MyForm()
        {
            InitializeComponent();
            InitializeListView();
            Load += new System.EventHandler(MyForm_Load);
        }
        
  5. ListView を初期化する InitializeListView() です。
    Column を表示するので View に View.Details(詳細モード)を設定して下さい。
    ListBox に Column を設定します。
    width[] が Column の幅で、head[] が見出しです。
        private void InitializeListView()
        {
            // ListViewコントロールのプロパティを設定
            listView1.FullRowSelect = true;
            listView1.GridLines = true;
            //listView1.Sorting = SortOrder.Ascending;
            listView1.View = View.Details;
    
            // 列ヘッダの作成
            ColumnHeader[] columnHead = new ColumnHeader[3];
            for (int i=0; i<3; i++)
            {   columnHead[i] = new ColumnHeader();
                columnHead[i].Width = width[i];
                columnHead[i].Text = head[i];
            }
            listView1.Columns.AddRange(columnHead);
        }
    
  6. MyForm_Load() メソッドで Directory を検索して ListView に登録します。
    GetDirectories() で "C:\\Test" に格納されている Directory を検索します。
    GetFiles() で "C:\\Test" に格納されているファイルを検索します。
    事前に "C:\\Test" のフォルダーを作成して、サブフォルダーやファイルを格納しておいて下さい。
    listView1.Items.Add() でアイテムを登録します。
    fis[i].FullName; で、パスを含めたフルネームを取得します。
    ファイル名だけを取得するときは fis[i].Name; とします。
        private void MyForm_Load(object sender, System.EventArgs e)
        {
            //DirectoryInfoを作成
            DirectoryInfo di = new DirectoryInfo( "C:\\Test" );     //パスを指定
            string[] item = new string[3];
    
            //ディレクトリ一覧の取得
            DirectoryInfo [] dis = di.GetDirectories("*.*");        //パターンを指定
            for(int i=0; i<dis.Length; i++)
            {   item[0]= dis[i].FullName;
                item[1]= dis[i].LastWriteTime.ToString();
                item[2]= "";
                listView1.Items.Add(new ListViewItem(item));
            }
    
            //ファイル一覧の取得
            FileInfo [] fis = di.GetFiles("*.*");   //パターンを指定
            for( int i=0;i<fis.Length;i++)
            {   item[0]= fis[i].FullName;
                item[1]= fis[i].LastWriteTime.ToString();
                item[2]= fis[i].Length.ToString();
                listView1.Items.Add(new ListViewItem(item));
            }
        }
    
  7. フォルダーの検索は Folder Copy でも説明しています。
    Windows(C++)でも同様のプログラムを作成しています。
    Directry を List View に表示する を参照して下さい。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

超初心者のプログラム入門(C# Frame Work)