-1

特定のレベルのツリービューでチェックされた子ノードの数を見つけることに関する要件があります。チェックされた子ノードの数は、親ごとのノードの総数と比較されます。チェックされた子ノードの数がその特定の親の子ノードの合計よりも少ない場合、これは制限されていると見なされます。それ以外の場合は、完全にチェックされます。親ごとの子ノードの総数は、parent.childnodes.count プロパティを使用して確認できます。この番号を取得する方法が見つかりません。

よろしく、

イムドンド

4

1 に答える 1

2

再帰ラムダ関数FlattenTreeでうまくいくはずです。

Func<TreeNodeCollection, IEnumerable<TreeNode>> FlattenTree = null;
FlattenTree = coll => coll.Cast<TreeNode>()
                          .Concat(coll.Cast<TreeNode>()
                                      .SelectMany(x => FlattenTree(x.ChildNodes))
                           );

var nodesCount = FlattenTree(treeView.Nodes).Count();
var checkedNodesCount = FlattenTree(treeView.Nodes).Count(x=>x.Checked);

他の Linq2Object 関数も可能です

var checkedLeafNodes = FlattenTree(treeView.Nodes)
                       .Where(x => x.ChildNodes.Count == 0 && x.Checked==true)
                       .ToList();
于 2012-08-18T14:19:00.110 に答える