windowFormのTreeViewの全てのノードを反復処理する方法

 

TreeNodeが選択された時、その子Nodeをハイライト表示したく、この処理について調べた。

コードはこちら(c#)

private void PrintRecursive(TreeNode treeNode)
{
// Print the node.
System.Diagnostics.Debug.WriteLine(treeNode.Text);

// Visit each node recursively.
foreach (TreeNode tn in treeNode.Nodes)
{
PrintRecursive(tn);
}
}

// Call the procedure using the TreeView.
private void CallRecursive(TreeView treeView)
{
// Print each node recursively.
foreach (TreeNode n in treeView.Nodes)
{
//recursiveTotalNodes++;
PrintRecursive(n);
}
}

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
CallRecursive(this.treeView1);

IEnumerator test = e.Node.Nodes.GetEnumerator();

while (test.MoveNext()) {
((TreeNode)test.Current).BackColor = Color.Yellow
}
}

上二つはNodeを全探索してくれる再帰関数。

一番下はTreeViewのPlusをクリックしたときのイベント発火メソッド。

子ノードのハイライトはWhile部分でやっているけど、

初期化するために全探索による初期化が必要だった。

全探索のメソッドかプロパティ用意してくれても良いのに。。。

 

docs.microsoft.com

docs.microsoft.com

コメント

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