2

TreeNodeプロパティNextVisibleNodeが意味的にどのように定義されているのか疑問に思っています。のプロパティに対応していないことに気付きました。TreeNodeIsVisible

クライアント領域に表示できるよりも多くのを保持Windows.Forms.Formしている を考えてみましょう(つまり、スクロール バーが表示されます)。TreeViewTreeNode

TreeNode次のコードを使用して、クライアント領域に表示されているのみを反復しようとすると...

int numVisible = 0;

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

...実際には、最初に表示されたものより下のすべて のがカウントされます。期待どおりに動作しますが、 の正しいサブセットを反復するには、の条件をに拡張する必要があります。TreeNodeTreeNodeTopNodefornode != null && node.IsVisibleTreeNode

この動作はNextVisibleNode意図したものですか、それともバグによる可能性がありますか?

4

1 に答える 1

1

「設計どおり」またはバグのようです。しかし、チェックのアプローチがIsVisible進むべき道のようです:

TreeNode.NextVisibleNode は何を返す必要がありますか

おそらくNextVisibleNode展開状態を参照します (つまり、展開されていない子ノードは可視としてカウントされません) が、実際のIsVisibleプロパティではありません。これは、私の限られたテストで見られる動作です。そして、それはそれを区別するように見える唯一のものですNextNode

于 2012-11-16T15:14:59.517 に答える