.NET TIPS

ListViewコントロールへ項目を追加するには?

デジタルアドバンテージ 一色 政彦
2005/02/04

 本稿では、.NET Frameworkの標準コントロールであるListViewコントロール(System.Windows.Forms名前空間)を活用するために、ListViewコントロールにデータを追加する方法を紹介する。

 ListViewコントロールはデータ項目をアイコン表示や詳細表示などにより一覧表示するためのもので、Windowsのエクスプローラでもおなじみのコントロールだ。その表示スタイルとしては、次のような4種類が用意されている。

ListViewコントロールの4つの表示スタイル
左から順番に、「大きなアイコン」(LargeIcon)、「小さなアイコン」(SmallIcon)、「一覧」(List)、「詳細」(Details)という表示になっている。詳しくは、MSDN「View列挙体」を参照してほしい。

 詳細表示では、1つのデータ項目につき複数の種類の情報を列ごとに表示できる。各列の値によりデータ項目の並べ替えも可能だ。

ListViewコントロールのヘッダ項目の作成

 ここでは、ListViewコントロールへ実際のデータを追加する前に、まずListViewコントロールのヘッダ項目を作成しておこう。

 なお、上記4種類の表示スタイルのうちヘッダ項目が表示されるのは、ListViewコントロールのViewプロパティが「View列挙体(System.Windows.Forms名前空間)のDetails(=詳細表示)」に設定されているときのみである。

 ヘッダ項目を作成するには、ListViewコントロールのColumnsプロパティのAddメソッドもしくはAddRangeメソッドを使えばよい。複数のヘッダ項目を作成したい場合には、複数をまとめて追加できるAddRangeメソッドが便利だ。よって本稿のサンプル・プログラムは、このAddRangeメソッドを利用する。

 AddRangeメソッドのパラメータには、ColumnHeaderオブジェクト(System.Windows.Forms名前空間)の配列を指定する。1つのColumnHeaderオブジェクトが、1つのヘッダ項目に対応する。

 具体的なサンプル・コードは、以下のとおりだ。ここではヘッダ項目として3つの列を設定している。

// ListViewコントロールを初期化します。
private void InitializeListView()
{
  // ListViewコントロールのプロパティを設定
  listView1.FullRowSelect = true;
  listView1.GridLines = true;
  listView1.Sorting = SortOrder.Ascending;
  listView1.View = View.Details;

  // 列(コラム)ヘッダの作成
  columnName = new ColumnHeader();
  columnType = new ColumnHeader();
  columnData = new ColumnHeader();
  columnName.Text = "名前";
  columnName.Width = 100;
  columnType.Text = "種類";
  columnType.Width = 60;
  columnData.Text = "データ";
  columnData.Width = 150;
  ColumnHeader[] colHeaderRegValue =
    { this.columnName, this.columnType, this.columnData };
  listView1.Columns.AddRange(colHeaderRegValue);
}
ListViewコントロールにヘッダ項目を追加するサンプル・コード(C#)

' ListViewコントロールを初期化します。
Private Sub InitializeListView()

  ' ListViewコントロールのプロパティを設定
  listView1.FullRowSelect = True
  listView1.GridLines = True
  listView1.Sorting = SortOrder.Ascending
  listView1.View = View.Details

  ' 列(コラム)ヘッダの作成
  columnName = New ColumnHeader
  columnType = New ColumnHeader
  columnData = New ColumnHeader
  columnName.Text = "名前"
  columnName.Width = 100
  columnType.Text = "種類"
  columnType.Width = 60
  columnData.Text = "データ"
  columnData.Width = 150
  Dim colHeaderRegValue() As ColumnHeader = _
    {Me.columnName, Me.columnType, Me.columnData}
  listView1.Columns.AddRange(colHeaderRegValue)

End Sub
ListViewコントロールにヘッダ項目を追加するサンプル・コード(VB.NET)

 上記コードの詳細は割愛するが、最初にListViewコントロールのプロパティ設定で、行選択モード(FullRowSelectプロパティ)、グリッド線表示(GridLinesプロパティ)、ソート機能(Sortingプロパティ)、詳細表示(Viewプロパティ)の設定を行っている。さらに続けて列(コラム)ヘッダの作成で、「名前」(列幅:100)、「種類」(列幅:60)、「データ」(列幅:150)という3つのColumnHeaderオブジェクトを作成して、それをAddRangeメソッドによりヘッダ項目として登録している。

 ここではコードによりヘッダ項目の実装を行ったが、Visual Studio .NETのIDEの[プロパティ]ウィンドウにある「Columnsプロパティ」からは、GUIにより簡単に設定することもできる。

ListViewコントロールへのデータの追加

 次にListViewコントロールへ実際のデータを追加する。

 これにはListViewコントロールのItemsプロパティのAddメソッドもしくはAddRangeメソッドを使えばよい。これに関しても複数をまとめて追加するにはAddRangeメソッドを使う。本稿のサンプル・コードではデータを1つずつ登録するので、Addメソッドを使用する。

 Addメソッドのパラメータには、ListViewItemオブジェクト(System.Windows.Forms名前空間)を指定する。1つのListViewItemオブジェクトが、1つのデータに対応する。

 先ほどのサンプル・コードでは3つの列項目を作ったが、この場合には1つのデータには3つの文字列項目が存在することになる。よって、ListViewItemオブジェクトには3つの文字列データを含める必要がある。これを実現するには、ListViewItemクラスのコンストラクタのパラメータで、それらを配列として指定すればよい。

 具体的には、以下のようなサンプル・コードになる。

// ListViewコントロールのデータを更新します。
private void RefreshListView()
{
  // ListViewコントロールのデータをすべて消去します。
  listView1.Items.Clear();

  // ListViewコントロールにデータを追加します。
  string[] item1 = { "リンゴ", "果物", "赤"};
  listView1.Items.Add(new ListViewItem(item1));
  string[] item2 = { "メロン", "果物", "緑"};
  listView1.Items.Add(new ListViewItem(item2));
  string[] item3 = { "ピーマン", "野菜", "緑"};
  listView1.Items.Add(new ListViewItem(item3));
}
ListViewコントロールのデータを追加するサンプル・コード(C#)
 
' ListViewコントロールのデータを更新します。
Private Sub RefreshListView()

  ' ListViewコントロールのデータをすべて消去します。
  ListView1.Items.Clear()

  ' ListViewコントロールにデータを追加します。
  Dim item1() As String = {"リンゴ", "果物", "赤"}
  listView1.Items.Add(New ListViewItem(item1))
  Dim item2() As String = {"メロン", "果物", "緑"}
  listView1.Items.Add(New ListViewItem(item2))
  Dim item3() As String = {"ピーマン", "野菜", "緑"}
  listView1.Items.Add(New ListViewItem(item3))

End Sub
ListViewコントロールのデータを追加するサンプル・コード(VB.NET)

 上記のコードにあるItemsプロパティのClearメソッドは、既存のデータ項目をすべて消去するためのものだ。

 以上のサンプル・プログラムを実行したのが次の画面である。

ListViewコントロールのサンプル・プログラムの実行結果

 ListViewコントロールの詳細表示はDataGridコントロールによるデータ一覧表示に似ているが、DataGridコントロールとは違って、コントロール内で直接、データの編集を行うことはできない。End of Article

カテゴリ:Windowsフォーム 処理対象:ListViewコントロール
使用ライブラリ:ColumnHeaderクラス(System.Windows.Forms名前空間)
使用ライブラリ:ListViewItemクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
ListViewコントロールでサムネイル画像を一覧表示するには?
[ASP.NET]ListViewコントロールで非定型のリストを表示するには?
ListViewコントロールで項目を選択できないようにするには?
TreeViewコントロールへ項目を追加するには?
[ASP.NET]DataGridコントロールのヘッダーにソートされた方向を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH