表示の切り替え

ListView の表示形式を切り替えます。

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

プログラムの説明

  1. ListView は ListBox を拡張したもので、ウインドウズ・エクスプローラでお馴染みです。
    ListView には幾つかの表示スタイルがあります。
    これらの表示形式をマウスのクリックで切り替えてみましょう。
  2. CLI の環境で実行可能な完成したプログラムです。
    実行の方法は Command Line から Windows プログラムを実行 を参照して下さい。
    /**********************************************/
    /*★ ListView の表示を切り替える    前田 稔 ★*/
    /**********************************************/
    using System;
    using System.Drawing;
    using System.Windows.Forms;
    
    public class MyForm : Form
    {
        ListView    listView1;
        ImageList   imageListSmall;
        ImageList   imageListLarge;
        string[]    Files =
        { "C:\\DATA\\Test\\Icon1.ico", "C:\\DATA\\Test\\Icon2.ico", "C:\\DATA\\Test\\Icon3.ico",
          "C:\\DATA\\Test\\Icon4.ico", "C:\\DATA\\Test\\Icon5.ico"  };
    
        public MyForm()
        {
            InitializeComponent();
            Load += new System.EventHandler(MyForm_Load);
        }
    
        private void InitializeComponent()
        {
            this.listView1 = new System.Windows.Forms.ListView();
            this.SuspendLayout();
            // listView1
            this.listView1.Location = new System.Drawing.Point(12, 12);
            this.listView1.Name = "listView1";
            this.listView1.Size = new System.Drawing.Size(258, 232);
            this.listView1.TabIndex = 0;
            this.listView1.UseCompatibleStateImageBehavior = false;
            this.listView1.View = System.Windows.Forms.View.List;
            this.listView1.FullRowSelect = true;
            this.listView1.GridLines = true;
            this.listView1.View = View.Details;
            this.listView1.MouseDown += 
                new System.Windows.Forms.MouseEventHandler(this.listView1_MouseDown);
            // MyForm
            this.ClientSize = new System.Drawing.Size(282, 256);
            this.Controls.Add(this.listView1);
            this.Name = "MyForm";
            this.ResumeLayout(false);
        }
    
        private void MyForm_Load(object sender, System.EventArgs e)
        {
            // 列(コラム)ヘッダの作成
            ColumnHeader[] columnHead = new ColumnHeader[2];
            for (int i = 0; i < 2; i++) columnHead[i] = new ColumnHeader();
            columnHead[0].Text = "名前";
            columnHead[0].Width = 100;
            columnHead[1].Text = "色";
            columnHead[1].Width = 80;
            listView1.Columns.AddRange(columnHead);
    
            // イメージの設定
            imageListSmall = new ImageList();
            for (int i = 0; i < Files.GetLength(0); i++)
            { imageListSmall.Images.Add(new Bitmap(Files[i])); }
            listView1.SmallImageList = imageListSmall;
            imageListLarge = new ImageList();
            imageListLarge.ImageSize = new Size(64, 64);
            for (int i = 0; i < Files.GetLength(0); i++)
            { imageListLarge.Images.Add(new Bitmap(Files[i])); }
            listView1.LargeImageList = imageListLarge;
    
            string[] item0 = { "バラ", "赤" };
            listView1.Items.Add(new ListViewItem(item0));
            string[] item1 = { "ゆり", "白" };
            listView1.Items.Add(new ListViewItem(item1));
            string[] item2 = { "ひまわり", "黄"};
            listView1.Items.Add(new ListViewItem(item2));
            string[] item3 = { "さくら", "桃" };
            listView1.Items.Add(new ListViewItem(item3));
            string[] item4 = { "コスモス", "桃" };
            listView1.Items.Add(new ListViewItem(item4));
    
            listView1.Items[0].ImageIndex = 0;
            listView1.Items[1].ImageIndex = 1;
            listView1.Items[2].ImageIndex = 2;
            listView1.Items[3].ImageIndex = 3;
            listView1.Items[4].ImageIndex = 4;
        }
    
        // マウスのクリック
        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            switch(listView1.View)
            {   case View.Details:
                    listView1.View = View.LargeIcon;
                    Console.WriteLine("LargeIcon");
                    break;
                case View.LargeIcon:
                    listView1.View = View.SmallIcon;
                    Console.WriteLine("SmallIcon");
                    break;
                case View.SmallIcon:
                    listView1.View = View.List;
                    Console.WriteLine("List");
                    break;
                case View.List:
                    listView1.View = View.Tile;
                    Console.WriteLine("Tile");
                    break;
                default:
                    listView1.View = View.Details;
                    Console.WriteLine("Details");
                    break;
            }
        }
    }
    
    class form01
    {
        public static void Main()
        {
            MyForm mf = new MyForm();
            Application.Run(mf);
        }
    }
    
  3. ListView に Column を設定します。
            ColumnHeader[] columnHead = new ColumnHeader[2];
            for (int i = 0; i < 2; i++)  columnHead[i] = new ColumnHeader();
            columnHead[0].Text = "名前";
            columnHead[0].Width = 100;
            columnHead[1].Text = "色";
            columnHead[1].Width = 80;
            listView1.Columns.AddRange(columnHead);
    
            string[] item0 = { "バラ", "赤" };
            listView1.Items.Add(new ListViewItem(item0));
            string[] item1 = { "ゆり", "白" };
            listView1.Items.Add(new ListViewItem(item1));
            string[] item2 = { "ひまわり", "黄"};
            listView1.Items.Add(new ListViewItem(item2));
            string[] item3 = { "さくら", "桃" };
            listView1.Items.Add(new ListViewItem(item3));
            string[] item4 = { "コスモス", "桃" };
            listView1.Items.Add(new ListViewItem(item4));
        
  4. ListView に大きなアイコンと小さなアイコンを設定します。
    プログラムをテストするときは Icon1.ico~Icon5.ico の適当なアイコンを用意して下さい。
        ListView    listView1;
        ImageList   imageListSmall;
        ImageList   imageListLarge;
        string[]    Files =
        { "C:\\DATA\\Test\\Icon1.ico", "C:\\DATA\\Test\\Icon2.ico", "C:\\DATA\\Test\\Icon3.ico",
          "C:\\DATA\\Test\\Icon4.ico", "C:\\DATA\\Test\\Icon5.ico"  };
                ・・・
            // イメージの設定
            imageListSmall = new ImageList();
            for (int i = 0; i < Files.GetLength(0); i++)
            { imageListSmall.Images.Add(new Bitmap(Files[i])); }
            listView1.SmallImageList = imageListSmall;
            imageListLarge = new ImageList();
            imageListLarge.ImageSize = new Size(64, 64);
            for (int i = 0; i < Files.GetLength(0); i++)
            { imageListLarge.Images.Add(new Bitmap(Files[i])); }
            listView1.LargeImageList = imageListLarge;
    
            listView1.Items[0].ImageIndex = 0;
            listView1.Items[1].ImageIndex = 1;
            listView1.Items[2].ImageIndex = 2;
            listView1.Items[3].ImageIndex = 3;
            listView1.Items[4].ImageIndex = 4;
        
  5. マウスのクリックを検出して表示の形式を切り替えるメソッドです。
            this.listView1.MouseDown += 
                new System.Windows.Forms.MouseEventHandler(this.listView1_MouseDown);
                ・・・
        private void listView1_MouseDown(object sender, MouseEventArgs e)
        {
            switch(listView1.View)
            {   case View.Details:
                    listView1.View = View.LargeIcon;
                    Console.WriteLine("LargeIcon");
                    break;
                case View.LargeIcon:
                    listView1.View = View.SmallIcon;
                    Console.WriteLine("SmallIcon");
                    break;
                case View.SmallIcon:
                    listView1.View = View.List;
                    Console.WriteLine("List");
                    break;
                case View.List:
                    listView1.View = View.Tile;
                    Console.WriteLine("Tile");
                    break;
                default:
                    listView1.View = View.Details;
                    Console.WriteLine("Details");
                    break;
            }
        }
        

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