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