【C#】ListViewでカスタム情報を持たせる2つの方法

C#

ListViewはC#でよく使われるコントロールの一つです。ListViewItemにユーザ独自のデータを持たせることで、より柔軟なプログラミングが可能になります。ここでは、ListViewItemにカスタム情報を持たせる2つの方法を紹介します。

方法1: ListViewItemクラスのTagプロパティを使用する

ListViewItemクラスのTagプロパティを使って任意のオブジェクトをListViewItemに関連付けます。これにより、シンプルなデータから複雑なオブジェクトまで、柔軟にデータを持たせることができます。Tagプロパティはobject型なので、どんなタイプのデータでも格納可能です。

// リストビューへのアイテムの登録
private void button1_Click(object sender, EventArgs e)
{
	// ListViewItemを作成し、ListViewに追加
	ListViewItem item1 = new ListViewItem("項目1");
	item1.Tag = "これは項目1のカスタムデータです";
	listView1.Items.Add(item1);

	ListViewItem item2 = new ListViewItem("項目2");
	item2.Tag = new { Description = "項目2の説明", Value = 123 };
	listView1.Items.Add(item2);
}
// アイテムを使用
private void button2_Click(object sender, EventArgs e)
{
	// アイテム1をカスタムクラスとして取得
	var item = listView1.Items[0];

	// 独自のプロパティを使用
	Console.WriteLine((string)item.Tag);   // ★重要:元の型へのキャストが必要
}

方法2: ListViewItemを継承したクラスを使用する

ListViewItemを継承したカスタムクラスを作成します。これにより、ListViewItemに新しいプロパティやメソッドを追加して、より複雑な機能を実装することができます。この方法は、ListViewItemにカスタムの振る舞いやデータ構造を持たせたい場合に適しています。

// ListViewItemを継承したカスタムクラス
public class CustomListViewItem : ListViewItem
{
	// 独自のプロパティ
	public string CustomInfo { get; set; }

	// コンストラクタ
	public CustomListViewItem(string text)
		: base(text)
	{
	}

	// 独自のメソッドも作れる
	public void CustomMethod()
	{
		Console.WriteLine("独自のメソッドを実行");
	}
}
// リストビューへのアイテムの登録
private void button3_Click(object sender, EventArgs e)
{
	// CustomListViewItemを2つ作成し、ListViewに追加
	CustomListViewItem customItem1 = new CustomListViewItem("項目1");
	customItem1.CustomInfo = "これは項目1のカスタム情報です";
	listView2.Items.Add(customItem1);

	CustomListViewItem customItem2 = new CustomListViewItem("項目2");
	customItem2.CustomInfo = "これは項目2のカスタム情報です";
	listView2.Items.Add(customItem2);
}
// アイテムを使用
private void button4_Click(object sender, EventArgs e)
{
	// アイテム1をカスタムクラスとして取得(キャストが必要)
	var customItem = (CustomListViewItem)listView2.Items[0];

	// 独自のプロパティを使用
	Console.WriteLine(customItem.CustomInfo);

	// 独自のメソッドを実行
	customItem.CustomMethod();
}

まとめ

今回紹介した方法は、どちらの方法もListViewItemに追加情報を持たせてアプリケーションの機能を拡張しやすくなります。使用する方法はアプリケーションの要件や好みに応じて選んでください。

タイトルとURLをコピーしました