2

我想知道该TreeNode属性NextVisibleNode是如何在语义上定义的。我注意到它与 a的属性对应。TreeNodeIsVisible

考虑 aWindows.Forms.Form持有TreeViewTreeNodes 比它可以在其客户区显示的更多(即出现滚动条)。

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

int numVisible = 0;

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

...实际上所有 TreeNode低于第一个可见的 sTreeNode都被计算在内。尽管TopNode按预期工作,但必须扩展for' 条件以node != null && node.IsVisible迭代TreeNodes 的正确子集。

这种行为是NextVisibleNode有意的还是可能是由于错误?

4

1 回答 1

1

看起来它要么是“设计的”,要么是一个错误。但听起来你的检查IsVisible方法是要走的路:

TreeNode.NextVisibleNode 必须返回什么

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

于 2012-11-16T15:14:59.517 回答