如何将项目从treeview转移到richtextbox?

时间:2017-01-14 20:04:42

标签: c# foreach treeview richtextbox

我用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。

我在哪里做错了?

1 个答案:

答案 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

有很多方法可以实现这一目标,但这是一种方式,它应该是相当直接的(如果你理解递归)。