リストボックスとリストビューは、ともにリスト形式(表形式)のデータを整理・表示する場合に適していますが、リスト ボックスは、表 形式だけ
 でなく、アイコン形式でサムネイル状に表示することが可能な点が異なります。 
  


  リストビューコントロールをフォーム に貼り付ける
  リスト ビューコントロールの名前を変え
  リストビューの大きさを変更する
  リストビューの位置を変更する
  リストビューを初期化する
  リスト ビューの表示を変える
  リストビューにアイテム(項目) を付け加える
  リストビューをDetails ビューで表示する
  リストビューのアイテム数をカウ ントする
  リストビューのアイテム名を変 更する
  リストビューにチェックボックスをつ ける
  リストビューにアイコンをつけ る
  リストビューを並べ替える
  リストビューの背景色を変える
  リストビューの描画色を変える
  リストビューのアイテムパスを 取得する
 
マウス クリックされ たアイテムを選択状態にする

 
リストビューコントロールをフォーム に貼り付ける

  1 ツールボックス(ツールボックスが開いていない場合は、表示メニューから「ツールボックス」を選択してください。)から、 「ListView」をドラッ
   グし、フォーム上にマウスカーソルを持って行く。

  2 フォーム上で、リストビューを表示する大きさの指定は、マウスのドラッグにより行います。

  3 デフォルトで、リストビューのネーミングは、listView1、listView2・・・・の順となりま す。


リスト ビューコントロールの名前を変える

  1 フォームイメージが表示されるデザインビューの状態にし、画面右下のプロパティウィンドウのName欄の内容を変更し ます。プロパティウィ
   ンドウ が表示されない場合は、表示メニューから「プロパティウィンドウ」を選択してください。

  ※ リストビューに限らず、ツールボックスから貼り付けたコントロールの名称 を、プログラム内から変更することはできません。これは、プロ
   グ
ラムがこ のNameプロパテイでコントロールを区別しているためです。

リストビューの大きさを変更する

  1 ネーミングと同様に、プロパティウィンドウのSize(大きさ)欄を変更してください。カンマの左側がリストビューの横幅、右側が縦幅となりま
    す。
  2 Sizeはプログラムの中から変更することができます。例えば、

           listView1.Size=New System.Drawing.Size(300, 200);
                                                                                         という具合です。
              他のコーディング方法としては、
                listView1.Width=300;
                listView1.Height=200;

       とする方法があります。

リストビューの位置を変更する

  1 プロパティウィンドウのLocation(位置)欄を変更してください。カンマの左側が画面左端からの位置、右側が画 面上端からの 位置となり
   ます。
  2 Sizeはプログラムの中から変更することができます。例えば、
           listView1.Location=New System.Drawing.Point(20, 15);
                                                                                         という具合です。
              他のコーディング方法としては、
                listView1.Left=20;
                listView1.Top=15;

       とする方法があります。
 

リスト ビューを初期化する

    リストビューは最初にフォームに貼り付けた段階で、初期化されていますが、明示的に初期化することもできます。
        リストビューのノードをすべて消去するには、
                listView1.Clear();
        
    リストビューを書き換えた後の状態を画面表示に反映するには、
                listView1.Reflesh();
  
    を実行します。

リスト ビューの表示を変える

  
  リストビューの表示方法には4つの種類があります。この多様な表示方法のあることがリストビューの大きな特徴となっています。
    表示方法の切替は、リストビューのViewプロパテイによって行います。

    @ LargeIconビュー
      次のような表示になります。ここで表示されるアイコンは、LargeImageListプ ロパテイで、関連させるイメージリストを指定しま す。
      プログラムからは、listView1.View=
LargeIcon; とコー ディングします。

    A SmallIconビュー
      次のような表示になります。ここで表示されるアイコンは、SmallImageListプ ロパテイで、関連させるイメージリストを指定しま す。
             プログラムからは、listView1.View=SmallIcon; とコー ディングします。

    B Detailsビュー
      次のような表形式の表示になります。各行(アイテム)の左端のセルには、スモールアイコンを表示させることができます。
             プログラムからは、listView1.View=Details; とコーディ ングします。
             アイコンは、SmallImageListプ ロパテイで、関連させるイメージリストを指定します。表の 境界線を表示するには、GridLineプロパテイを
      trueにします。


    C Listビュー
      次のような表示になります。ここで表示されるアイコンは、SmallImageListプ ロパテイで、関連させるイメージリストを指定しま す。
             プログラムからは、listView1.View=List; とコーディングし ます。

リスト ビューにアイテムを付け加える

 
 コントロールを貼り付けただけでは、リストビューは何の動作もしません。リストビューを構成するのは、アイテム(項目)です。エクセル などの
 表計算ソフトで言えば、各行がアイテム、各行を構成する列はサブアイテムを表します。

  それでは、リストビューに「バラ」、「ヒマワリ」という名前のアイテムを付け加えてみましょう。

   
            listView1.Items.Add("バラ");
            listView1.Items.Add("ヒマワリ");

   これを実行すると、リストビューに、2つの項目が表示されます。
   リストビューコントロールの場合、表示方法によって、表示内容は大きく異なりますが、Iconビューの場合は、アイコン画像とアイテム名のみ
  が表示されます。

リストビューをDetailsビューで表示する

   もっとも、詳細な表示は、その名のとおりDetails ビューの際に実現します。
            listView1.View=Details; 
   
      Detailsの要素は、サブアイテムによって、アイテムに付加していきます。
   ここでは、
Detailsビューを見ていきましょう。
     
   Detailsビューには、最上端にタイトル行があります。

   まず、タイトルをつけましょう。
   プロパテイウィンドウのColumnsプ ロパテイの(コレクション)を開きます。すると、ColumnHeaderコレク ションエデイタが開きま す。
   タイトルを付けるには、「追加」ボタンを押し、エデイタの右側のプロパテイ欄を編集します。
   タイトル名はText, タイトルの水平位置はTextAlign,タイトル幅はWidthで設定します。
   ここでは、「花」、「開花時期」、「増殖方法」というタイトル名を付けましょ う。
       
   このリストビューに、アイテムを追加していき ましょう。
      
            ListViewItem item1=listView1.Items.Add("バラ");
                item1.SubItems.Add("春〜夏");
                item1.SubItems.Add("挿し木、接木");

            ListViewItem item2=listView1.Items.Add("ヒマワリ");
                item2.SubItems.Add("夏");
                item2.SubItems.Add("種子");

リスト ビューのアイテム数をカウントする

     プログラムから次のように取得します。
                    int i = listView1.Items.Count;

リスト ビューのアイテム名を変更する

  
   リストビューのアイテム名は、Itemsプロパテイの (コレクション)から設定することができます。
     プログラムから、アイテム名を設定するには、

                listView1.Items[0].Text = "ミニバラ";

     という風に行います。ここで、
[ ]内の数字は、アイテムインデックスで、アイテムの追加順に0、1、2、・・・と番号が付きます。
     また、サブアイテム名の設定は、             
 

            listView1.Items[0].SubItems[2].Text="挿し木";

     とします。ここで
SubItemsの[ ]内 は、サブアイテムインデックスで、アイテムのColumn順に0、1、2、・・・と番号が付きます。
       
     「庭園」
ノードを、「ガーデン」ノードに変更してみま しょう。 ノード名は、各ノードTextプロ パティで設定・変更します。

             
listView1.Nodes("庭園"). Text="ガーデン";

     これだけです。
     また、プログラムの実行画面上からも簡単にノード名を変更できます。
     名前を変えたいノード上でマウスクリックをします。すると、ノードのテキスト部分が反転しますので、そのまま、反転したテキストボックス
    内に変更後の名前を入力してください。

     ※ノード名の変更は、リストビューのLabelEditプロパティが真 のときのみ有効です。プログラムからは、
               
listView1.LabelEdit=true;
                               としてください。

リストビューにチェックボックスをつ ける
      
    チェックボックスを付けるには、リストビューのプロパテイウィンドウで、CheckBoxesプロ パテイを真にしてください。プログラムから は、
             
    listView1.CheckBoxes=true; と します。

リスト ビューにアイコンをつける
    
     
リストビューには、アイコンをつけることができ、 これがリストボックスコントロールとの違いとなっています。
     アイコンの大きさは自由に設定できますが、個々のノードに固有の画像データを読み込むというメソッドはリストビューにはありません。
     このため、別に、イメージリストを作って、
イメー ジリストコントロールとリストビューコントロールとを関連付ける方法をとります。

     では、これをステップを追って見てみましょう。

      @ イメージリストを作る

        イメージリストを使って、コントロールに画像を付加する手法は、他のコントロールでも共通です。
        まず、イメージリストコントロール(ImageList(をツールボックスからフォーム上にドラッグします。
        すると、フォームイメージの下に、imageList1コントロールが表示されます。デフォルトでのネーミングの規則は、他のコントロー ルと
                  同様に、
imageList1 , imageList2 , ・・・ という並びになります。

        さて、イメージリストは、特定の大きさの画像ファイルが複数ある場合に多く用いられます。フォーム上のタスクバーアイコンやボタン
        アイコンなど、特定の大きさの画像が多数必要な用途に向いています。
        画像のサイズは、イメージリストのImageSizeプロパテイで設定します。カンマの左側が画像横幅、右側が画像縦幅となります。

        アイコンの場合、通常は、画像横幅=画像縦幅として問題ありません。
    
         ※ ImageSizeプロパテイは、プログラム上から取得す ることはできますが、設定することはできません。

           例えば、
             int w,h;
                            w=imageList1.ImageSize.Width ; h=imageList1.ImageSize.Height;
           は可能ですが、

              int w,h;
                            w=25;h=25;                      
                            imageList1.ImageSize.Width=w;=imageList1.ImageSize.Height;=h;
           はエラーとなります。

               次にイメージリストに画像ファイルを読み込みます。

                プロパテイウィンドウのImagesプロパテイ右側には(コレクション)という表示がありますが、この表示の意味は、このプロパテイが複数
      の要素を持つことを示しています。
                    プロパテイが(コレクション)である場合、(コレクション)の右側にある「・・・」をクリックすると、Imageコレクションエディタダイアログが
      開きます。
        このダイアログ内で、追加ボタンを押すと、「ファイルを開く」ダイアログボックスが開きます。 
        ここで、イメージリストに読み込む画像ファイルを指定すると、 Imageコレクションに新しいメンバーとして画像が追加され、画像の縮
      小イメージがメンバリストに追加されます。

      A イメージリストコントロールとリストビューコント ロールとを関連付ける

                では、次にリストビューとこのイメージリストを関連付けましょう。

         ◇ ビューモードが
LargeIconの場合
           
リスト ビューのプロパテイウィンドウで、LargeImageListプ ロパテイで、関連させるイメージリストを指定しま す。
           例えば、
"imageList1" を設定します。これで関連付けは終わりです。
           他のコントロール(例えばリストビュー)と、イメージリストを共有することも可能です。

         ◇ ビューモードがSmallIcon又はDetailsの場合
           
リスト ビューのプロパテイウィンドウで、SmallImageListプ ロパテイで、関連させるイメージリストを指定しま す。

      B アイテムにアイコンを貼り付ける

       アイテムにアイコンを付属けると、ビジュアル的に美しいリストビューに仕上がります。
       もう一度、イメージリストのコレクションを開いてみてください。すると、メンバリストの左端に、ボタン状の番号0、1、2、・・・が表示さ れ
      ています。これを「イメージインデックス」と言います。リストビューのアイテムアイコンを設定するには、このイメージインデックスを指定し
      ます。

         例えば、次のとお り。

                         listView1.Item[0]. ImageIndex=3;
                    listView1.
Item[0].SelectedImageIndex = 3;

        1行目は、通常表示時のイメージ指定、2行目はノードがセレクト状態の場合のイメージ指定です。例えば、セレクト状態の場合に
      アイコンの表示を変化させる場合などに用います。

リスト ビューを並べ替える

       リストビューには、Sortプ ロパテイがあるので、これは 簡単に行うことができます。このプロパテイを"true"にしてください。

リスト ビューの背景色を変える

       リストビューには、他のコントロール同様にBackColorプ ロパテイがあります。数字で背景色を指定するときは、R(赤)、G(緑)、B(青)の順
    に、0〜255の範囲で値を指定してください。例えば、赤は「255,0,0」、 白は「255,255,255」という具合です。
     
BackColorプ ロパテイから開けるピクチャーボックスから、色をクリック指定することもできます。

     
プログラム上から色指定する場合は、

                    listView1.BackColor=Color.Red;
                         又は    

                   
listView1.BackColor=Color.FromArgb(255, 0,0);          

     
という風に指定します。

リスト ビューの描画色を変える

 
   リストビューの枝の描画線、ノード名テキストの描画色は、ForeColorプロパ テイで指定します。
    プログラム上から色指定する場合は背景色の 設定と同様 に、

                   
listView1.ForeColor=Color.Black;

 
                            等と指定します。

リスト ビューのアイテムパスを取得する

    リストビューの枝のつながりについて、特定のノードを指定してパスを取得することができます。例えば、エクスプローラ のように、ド ライブ上
   のディレクトリ構造を、そのままリストビューとして表すような場合に利用価値があります。
       ノードパスの取得は、プログラム上から次のようにコーデイングします。

                     string s;
                    listView1.SelectedItem= listView1.Items[0].SubItem[1]
;
                    s=listView1.SelectedItem.FullPath;
                     
       すると、例えば、s="バラ\春〜夏"と、文字変数sでノードパスが取得できます。
    このうち、パスセパレータは、リストビューのPathSeparatorプロパテイで設定しますが、デフォルトでは、「\」記号となっています


マウスク リックされたアイテムを選択状態にする(Pending)
    マウスイベントには、マウスダウン、マウスアップなど関連イベントが多数ありますが、マウスクリックされたノードを取 得するには、 マウスダ
   ウンイベントを使うと便利です。


    private void listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            string s;
            ListViewItem item = listView1.GetItemAt(e.X, e.Y);
            if (item!=null)
            {
                s=item.Text;
            }
        }