TreeNode.NextVisibleNode坏了吗?

时间:2012-11-16 14:17:59

标签: c# winforms .net-4.0

我想知道如何在语义上定义TreeNode属性NextVisibleNode。我注意到它TreeNode的{​​{1}}属性相对应。

考虑一个IsVisible Windows.Forms.Form,其TreeView比其客户区显示的更多TreeNode(即显示滚动条)。

尝试仅使用以下代码迭代客户区中可见的TreeNode时...

int numVisible = 0;

for (TreeNode node = treeView.TopNode;
     node != null;
     node = node.NextVisibleNode)
{
    // Do something...
    ++numVisible;
}

...实际上所有 TreeNode位于第一个可见的TreeNode下面。虽然TopNode按预期工作,但必须将for的条件扩展为node != null && node.IsVisible才能迭代TreeNode的正确子集。

NextVisibleNode的这种行为是打算还是可能是由于某个错误?

1 个答案:

答案 0 :(得分:1)

看起来它是“按设计”还是错误。但听起来像检查IsVisible的方法是可行的方法:

What does TreeNode.NextVisibleNode have to return

也许NextVisibleNode引用扩展状态(即未扩展的子节点不计为可见),但不是实际的IsVisible属性。这是我在有限的测试中看到的行为。这就是唯一可以将它与NextNode

区分开来的东西