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部分でやっているけど、
初期化するために全探索による初期化が必要だった。
全探索のメソッドかプロパティ用意してくれても良いのに。。。
コメント