ListViewにアイコン付きの項目を追加する
リストビューにアイコン付きの項目を追加するコードを紹介します。
概要
リストビューに項目を追加するには、ItemsオブジェクトのAddメソッドを利用します。
プログラム
アイコンの準備
今回は、下図のアイコン画像を3つを作成し、イメージリストに追加します。今回は32 Pixel×32 Pixelの画像を作成し、画像形式はPNGにしました。
UI
下図のUIを作成します。
配置したイメージリストにイメージを設定します。イメージ設定の手順は
こちらの記事を参照してください。
ListViewとImageListを関連付けます。フォームデザイナに配置したListViewをクリックして選択した状態でプロパティウィンドウを表示します。
プロパティのLargeImageListの項目を確認します。デフォルトの状態では値が "(なし)"になっています。
コンボボックスの[↓]ボタンをクリックしてドロップダウンリストを開きます。フォームに配置されているImageListの一覧が表示されますので、先ほどイメージを設定したImageListを選択してListViewと関連付けします。
コード
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ListViewDemo
{
public partial class FormAddDelete : Form
{
public FormAddDelete()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem();
lvi.Text = "Penguin";
lvi.ImageIndex = 0;
listView1.Items.Add(lvi);
lvi = new ListViewItem("Chicken");
lvi.ImageIndex = 1;
listView1.Items.Add(lvi);
lvi = new ListViewItem("Pig");
lvi.ImageIndex = 2;
listView1.Items.Add(lvi);
}
}
}
解説
はじめに、ListViewの項目オブジェクトとなる、ListViewItemオブジェクトを作成します。下記のコードでListViewItemオブジェクトが作成できます。
ListViewItem lvi = new ListViewItem();
ListViewItemオブジェクトのプロパティに値を設定します。Textプロパティには項目のキャプション文字を設定します。また、ImageIndexには項目に表示するアイコンの番号を指定します。番号は関連付けされたイメージリストのID番号になります。
lvi.Text = "Penguin";
lvi.ImageIndex = 0;
ListViewのItemsオブジェクトのAddメソッドを呼び出し項目を追加します。第一引数に追加するListViewItemオブジェクトを与えます。
listView1.Items.Add(lvi);
同様の処理を繰り返して項目を3つListViewに追加します。
lvi = new ListViewItem("Chicken");
lvi.ImageIndex = 1;
listView1.Items.Add(lvi);
lvi = new ListViewItem("Pig");
lvi.ImageIndex = 2;
listView1.Items.Add(lvi);
実行結果
上記のプロジェクトを実行します。下図のウィンドウが表示されます。
[Add]ボタンをクリックするとListViewにアイコンが追加されたアイテムが追加されます。
補足:いろいろなコード記述
ListViewItemのコンストラクタに直接TextプロパティやImageIndexプロパティを指定する記述方法もあります。
private void button1_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem("Penguin");
lvi.ImageIndex = 0;
listView1.Items.Add(lvi);
}
private void button1_Click(object sender, EventArgs e)
{
ListViewItem lvi = new ListViewItem("Penguin",0);
listView1.Items.Add(lvi);
}
ListViewItemを変数に格納せず、シンプルにコードを記述したい場合には下記の記述方法でも動作します。コード記述の詳細は
オブジェクト初期化子を参照してください。
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Add(new ListViewItem() { Text = "Penguin", ImageIndex = 0 });
listView1.Items.Add(new ListViewItem() { Text = "Chicken", ImageIndex = 1 });
listView1.Items.Add(new ListViewItem() { Text = "Pig", ImageIndex = 2 });
}
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用