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コントロールのサンプル・プログラムの実行結果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值