【发布时间】:2018-12-27 14:45:37
【问题描述】:
我现在有精神障碍,这不会那么难。
我有一个函数应该获取 TreeView 中最后一个可见节点。首先,我想转到第一个可见节点,然后只要 node.IsVisible() 从那里开始第二个。
这是我所拥有的:
public TreeNode GetLastVisibleNode()
{
var node = treeControl1.Nodes.Cast<TreeNode>().Where(x => x.IsVisible).FirstOrDefault();
TreeNode retVal = node;
while (node != null && node.IsVisible)
{
if (!node.IsSelected)
retVal = node;
node = node.NextVisibleNode;
}
return retVal;
}
如您所见,当我有第一个可见节点(万岁)时,我让它迭代到最后一个可见节点,但我获得第一个可见节点的方法是错误的(OHHHHH!)
我注意到 treeControl1.Nodes 只给了我父节点但显然我想获得所有节点的第一个可见节点。
我也知道我可能需要一个递归方法,但正如我一开始所说,我现在有一个心理障碍,想尽快解决这个问题:(
【问题讨论】:
-
你所说的 first 是什么意思 - 最左边的节点,最底部的节点或集合中的第一个节点(这似乎是你目前正在做的事情)?
-
我的 TreeView - 视图中可见的第一个节点。使用我在函数中的第一行,它可以获取第一个可见的父节点(因为 TreeView.Nodes 只返回一个节点列表,它也可以有一个节点列表,可以......)但如果它是一个孩子,它也应该工作父母的孩子的孩子的孩子。
标签: c# loops recursion treeview iteration