あなたが持っている問題は、のTreeView1制御のNodes
コレクションは、ツリー内のすべてのノードのリストではないということです - それは唯一のリストですトップレベルノード。それが階層的になるのは、ツリーノードが子ノードのリストを含むことができることである。だから、あなたは、あなたの質問に定義されたツリー構造を得るために、あなたはこのような何かをしたいと思うでしょう:
private void AddTreeNodes()
{
// Create the root node.
TreeNode node = treeView1.Nodes.Add("0");
// the root node has only one child node (1), so we will reuse the node object
node = node.Nodes.Add("1");
// Now, the node is the parent of two nodes (2 and 5).
// We will want to keep track of node 2 because it has child nodes.
TreeNode anotherNode = node.Nodes.Add("2");
// Since node 5 doesn't have any child nodes, we don't need to keep track of it in this example.
node.Nodes.Add("5");
// Now, we need to make the child node of node 2. (Specifically, node 3).
node = anotherNode.Nodes.Add("3");
// And finally add the child node of node 3.
node.Nodes.Add("4");
}
ます。また、このようにそれを行うことができます:今
private void AddTreeNodes()
{
treeView1.Nodes.Add("0");
treeView1.Nodes[0].Nodes.Add("1");
treeView1.Nodes[0].Nodes[0].Nodes.Add("2");
treeView1.Nodes[0].Nodes[0].Nodes.Add("5");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("3");
treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("4");
}
、私がいることを知っていますコードは醜いですが、これから取得するための主なアイデアは、次のとおりです。
TreeView
制御がTreeNode
オブジェクト(Nodes
)のリストが含まれています。このリストは、ツリー内のすべてのノードのリストではなく、コントロールそのものの直接の子であるノードのリストです。
- 親ノードの下に存在する子ノードは、親ノードの
TreeNode
オブジェクトのリストに追加する必要があります。
- すべて
TreeNode
オブジェクトには、子であるTreeNode
オブジェクトのリストが含まれています。
TreeNode
を別のノードまたはTreeView
コントロール自体に追加すると、新しいTreeNode
オブジェクトへの参照が返されます。
TreeNode
のインデックスは、それが存在するリストに対してインデックスであり、階層全体に関するインデックスではありません。
TreeNode
オブジェクトには、ツリーのナビゲートに役立ついくつかのプロパティがあります。 PrevNode
およびNextNode
(存在する場合)前または次の兄弟ツリーノードを取得します。Parent
は現在のノードの親TreeNode
を取得します。