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