TreeViewはC#で階層構造のデータを表示するのによく使われるコントロールです。TreeNodeにユーザ独自のデータを持たせることで、アプリケーションの機能を柔軟に拡張できます。ここでは、TreeNodeにカスタム情報を持たせる2つの方法を紹介します。
方法1: TreeNodeクラスのTagプロパティを使用する
TreeNodeクラスのTagプロパティを使って任意のオブジェクトをTreeNodeに関連付けます。Tagプロパティはobject型なので、様々なタイプのデータを格納することが可能です。これにより、シンプルなデータから複雑なオブジェクトまで、TreeNodeに柔軟にデータを持たせることができます。
// ツリービューへのアイテムの登録
private void button1_Click(object sender, EventArgs e)
{
// ListViewItemを作成し、ListViewに追加
TreeNode node1 = new TreeNode("項目1");
node1.Tag = "これは項目1のカスタムデータです";
treeView1.Nodes.Add(node1);
TreeNode node2 = new TreeNode("項目2");
node2.Tag = new { Description = "項目2の説明", Value = 123 };
treeView1.Nodes.Add(node2);
}
// ノードを使用
private void button2_Click(object sender, EventArgs e)
{
// ノード1をカスタムクラスとして取得
var node = treeView1.Nodes[0];
// 独自のプロパティを使用
Console.WriteLine((string)node.Tag); // ★重要:元の型へのキャストが必要
}
方法2: ListViewItemを継承したクラスを使用する
TreeNodeを継承したカスタムクラスを作成します。これにより、TreeNodeに新しいプロパティやメソッドを追加して、より複雑な機能を実装することができます。この方法は、TreeNodeにカスタムの振る舞いやデータ構造を持たせたい場合に適しています。
// TreeNodeを継承したカスタムクラス
public class CustomTreeNodeItem : TreeNode
{
// 独自のプロパティ
public string CustomInfo { get; set; }
// コンストラクタ
public CustomTreeNodeItem(string text)
: base(text)
{
}
// 独自のメソッドも作れる
public void CustomMethod()
{
Console.WriteLine("独自のメソッドを実行");
}
}
// ツリービューへのアイテムの登録
private void button3_Click(object sender, EventArgs e)
{
// CustomListViewItemを2つ作成し、ListViewに追加
CustomTreeNodeItem customNode1 = new CustomTreeNodeItem("項目1");
customNode1.CustomInfo = "これは項目1のカスタム情報です";
treeView2.Nodes.Add(customNode1);
CustomTreeNodeItem customNode2 = new CustomTreeNodeItem("項目2");
customNode2.CustomInfo = "これは項目2のカスタム情報です";
treeView2.Nodes.Add(customNode2);
}
// ノードを使用
private void button4_Click(object sender, EventArgs e)
{
// ノード1をカスタムクラスとして取得(キャストが必要)
var customNode = (CustomTreeNodeItem)treeView2.Nodes[0];
// 独自のプロパティを使用
Console.WriteLine(customNode.CustomInfo);
// 独自のメソッドを実行
customNode.CustomMethod();
}
まとめ
今回紹介した方法は、どちらの方法もTreeNodeに追加情報を持たせてアプリケーションの機能を拡張しやすくなります。使用する方法はアプリケーションの要件や好みに応じて選んでください。