この記事では、C#でTreeViewコントロールのノードを名前で検索して見つかった場合は選択状態にするサンプルコードを紹介します。
準備
フォーム上にツリービューを配置。名前はtreeView1とする。
ボタンもひとつ配置。名前はbutton1とする。
![](https://umateku.com/wp-content/uploads/2024/02/image-20.png)
サンプルコード
以下のサンプルコードは、ボタン押下時にTreeView内のノードを名前で検索します。
using System;
using System.Collections;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// ノードの登録
TreeNode rootNode = new TreeNode("ルートノード");
rootNode.Nodes.Add("子ノード1");
rootNode.Nodes.Add("子ノード2");
treeView1.Nodes.Add(rootNode);
// 全てのノードを展開
treeView1.ExpandAll();
}
// ボタン押下でノードを検索する
private void button1_Click(object sender, EventArgs e)
{
// 検索する名前
string searchName = "子ノード2";
// ツリービュー内を名前で検索
TreeNode foundNode = FindNodeByName(treeView1.Nodes, searchName);
// 見つかったか?
if (foundNode != null)
{
// 見つかったノードを選択状態にする
treeView1.SelectedNode = foundNode;
// ツリービューをフォーカスする
treeView1.Focus();
}
else
{
MessageBox.Show($"'{searchName}' は見つかりませんでした。");
}
}
// ノードを名前で検索するメソッド
private TreeNode FindNodeByName(TreeNodeCollection nodes, string name)
{
foreach (TreeNode node in nodes)
{
if (node.Text == name) // 名前が一致した場合
{
return node;
}
// 子ノードも検索
TreeNode foundNode = FindNodeByName(node.Nodes, name);
if (foundNode != null)
{
return foundNode;
}
}
return null; // 見つからなかった場合
}
}
}
まとめ
本記事では、ツリービューのノードを検索して見つかった場合は選択状態にするサンプルコードを紹介しました。