以下のツリービューがあり、子ノードの子を選択したい:
- クラス
- セクションA
- グループA1
- グループA2
- セクションB
- グループB1
- グループB2
- セクションA
ノードグループB2を選択したい。これどうやってするの ?
以下のツリービューがあり、子ノードの子を選択したい:
ノードグループB2を選択したい。これどうやってするの ?
あなたは次のようなことをしたい
TreeNode nodeSectionB = this.TreeView.Nodes["Section B"]; // Or .Nodes[1];
TreeNode node = nodeSectionB.Nodes["Group B2"]; // Or .Nodes[1];
this.TreeView.SelectedNode = node;
文字列を使用してノードを参照する場合、そのための参照を提供していると想定されることに注意してください。それ以外の場合は、ノードインデックスを使用する必要があります。上記は、ツリーが静的であり、後のノードの位置が変更されていないことを前提としています。
ツリーが動的である場合、つまり必要なノードの位置が変更される場合は、ツリーをループして必要なノードを見つける必要があります。これを行うには、次のようなものを使用します
private void SelectTreeNode(TreeView treeView, string nodeText)
{
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
CheckRecursive(n, nodeText);
}
private void CheckRecursive(TreeNode treeNode, string nodeText)
{
foreach (TreeNode tn in treeNode.Nodes)
if (String.Compare(tn.Text, nodeText, true) == 0)
this.TreeView.SelectedNode = tn;
}
ここで、this.TreeView
はツリービューのアクセサーであると見なされます。nodeText
見つけるために必要なノードテキストは次のとおりです。これは、同じテキスト値を持つノードに対して修正する必要がある場合があります。
これがお役に立てば幸いです。