親ノードがチェックされていない場合、子ノードのチェックを外したい.子ノードの親ノードが選択されていることを確認した場合、私のコードによれば。書き込み方法ですが、親ノードのチェックを外しても、子ノードはチェックされたままです。AfterCheck イベントで次のコードを実行しました。
private bool updatingTreeView;
private void treSelector_AfterCheck(object sender, TreeViewEventArgs e)
{
if (updatingTreeView) return;
updatingTreeView = true;
SelectParents(e.Node, e.Node.Checked);
updatingTreeView = false;
}
private void SelectParents(TreeNode node, Boolean isChecked)
{
var parent = node.Parent;
if (parent == null)
{
//CheckAllChildren(treSelector.Nodes, false);
return;
}
if (isChecked)
{
parent.Checked = true; // we should always check parent
SelectParents(parent, true);
}
else
{
if (parent.Nodes.Cast<TreeNode>().Any(n => n.Checked))
return; // do not uncheck parent if there other checked nodes
SelectParents(parent, false);
}
}
この問題を解決するには?