我用foreach来解决这个问题。我从未遇到过错误。但它发送错误的项目。
我想这样做:root:1,2,3和子节点:a,b,c,d,e,f。 RichTextBox将如下所示:1-> a-> b-> 2-> c-> d-> 3-> e-> f。
这是代码:
foreach (TreeNode root in treeView1.Nodes)
{
foreach (TreeNode child in root.Nodes)
{
richTextBox1.SelectedText = (root.Text + "->" + child.Text);
}
}
但看起来像这样:1-> a1-> b2-> c2-> d3-> e3-> f。
我在哪里做错了?
答案 0 :(得分:0)
您正在做的是,对于每个root-&gt;子对,您将该值写为List<String> list = supplier.get(); // list = new ArrayList<>()
for (Person person : people) // collect() loop using Spliterator from stream()
if (filter.test(person)) { // if (person.isAdult())
String value = map.apply(person); // value = person.getName()
accumulator.accept(list, value); // list.add(value)
}
List<String> names = finisher.apply(list); // names = list
的结尾。这将为您的for循环中的每次迭代提供1&gt; a | 1-&gt; b | 2-&gt; c | 2-&gt; d | 3-&gt; e | 3-&gt; f。当您移除管道并组合所有迭代时,您会发布1-> a1-&gt; b2-&gt; c2-&gt; d3-&gt; e3-&gt; f。 (这可以通过逐步调试找到)。
更好的选择是先将TextBox
转换为字符串,然后将其添加到TreeView
。您的问题是使用Recursion的完美示例。首先需要创建一个方法将树转换为字符串,然后将该字符串写入文本框。这也会处理一个有两个以上深度的TextBox
。
TreeView
有很多方法可以实现这一目标,但这是一种方式,它应该是相当直接的(如果你理解递归)。