我想知道如何在语义上定义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
的这种行为是打算还是可能是由于某个错误?
答案 0 :(得分:1)
看起来它是“按设计”还是错误。但听起来像检查IsVisible
的方法是可行的方法:
What does TreeNode.NextVisibleNode have to return
也许NextVisibleNode
引用扩展状态(即未扩展的子节点不计为可见),但不是实际的IsVisible
属性。这是我在有限的测试中看到的行为。这就是唯一可以将它与NextNode