は、すべてのroot->子ペアのために、あなたはその値にTextBox
の終わりを書いているということです。これは、あなたのforループの各繰り返しで1 - > a | 1-> b | 2-> c | 2-> d | 3-> e | 3-> fを与えます。パイプを外してすべての反復を組み合わせると、あなたが投稿したときに1-> a1-> b2-> c2-> d3-> e3-> fとなります。 (これはステップスルーデバッグで見つけられた可能性があります)。
TreeView
を文字列に変換してから、TextBox
に追加することをお勧めします。あなたの問題はRecursionを使用するための完全な例です。まずツリーを文字列に変換し、その文字列をテキストボックスに書き込むメソッドを作成する必要があります。これは2つ以上の深さのTreeView
も処理します。
private string TreeViewToString(TreeView tv, string delimiter) {
var result = new StringBuilder();
foreach (TreeNode node in tv.Nodes) {
TraverseNodes(node, delimited, result);
}
if (result.Length < delimiter.Length) {
return result.ToString();
} else {
return result.ToString(0, result.Length - delimiter.Length);
}
}
// recursive part
private void TraverseNodes(TreeNode node, string delimiter, StringBuilder result) {
result.AppendFormat("{0}{1}", node.Text, delimiter); // add node to string
foreach (TreeNode subNode in node.Nodes) {
TravserseNodes(subNode, delimiter, result); // recurse into nodes children
}
}
これを達成する方法はたくさんありますが、ここには1つの方法があります(再帰を理解している場合)。