【发布时间】:2012-08-09 18:09:35
【问题描述】:
假设我们有一个具有 TreeView 的 Windows 应用程序,您可以展开该视图的节点并向下钻取到子节点,它们可能还有更多子节点,所以现在我们可以展开该节点并走得更远,等等。 . 所以在我的源代码中我有一个方法Foo(string fatherNode) 获取我们点击的父节点并找到子节点并列出它们:
这个方法的高层是这样的:
private void Foo(string fatherNode)
{
// call some DB scripts and grab data you need to work with.
int numberOfKids = // get it from the thing you populated from the DB call.
for(int i = 1 to numberOfKids)
{
Node Child = // grab child[i] from the list we populated from DB calls
//Add it to the treeView
}
}
这个代码对于 UI 应用程序来说是很好的,我们点击一个节点,它运行这个方法一次并收集它需要的数据,现在我需要编写另一个方法,利用上面的方法的有用行一次抓取所有东西并将整个信息写入一个文件。
所以在我看来,in 对我来说是一种递归方法。但仍然无法弄清楚全貌,Prob 应该有两个集合,一个给父亲,一个给孩子,循环遍历孩子并进行递归调用以获取更多孩子并将它们添加到集合中,等等
我想知道您是否可以清除迷雾,我需要做的高级操作,集合应该是什么样子,在哪里添加它们,在哪里调用递归方法调用等等。 .请不要专门考虑“treeview”对象,我只是用它作为一个例子来更好地解释这个问题。最主要的是我发布的 Foo 方法的结构。这就是我应该使用的。
【问题讨论】:
-
(1) 您能否提供该列表的类,这样我们就不会只考虑 TreeView 了吗? (2) 抓住一切是什么意思?
-
@AndreCalil :通过抓住一切:我的意思是所有父亲和所有孩子的父亲和他们的孩子的整个等级制度。不只是我们可以点击树视图的特定的...可以把它想象成导出树视图可以显示的整个数据层次结构,如果它的所有节点一次展开。
-
第 1 条评论
//call some db script是否仅获取父节点和子节点信息的数据,而不是更深入? -
好的。您希望它如何呈现?
-
@Ankush :是的,它只是加载当前的,不会更深入。
标签: c# collections recursion