いくつかの親ノードと子ノードを持つツリービューがあります。子ノードが選択されている場合は、親ノードを選択する必要があります。この機能は正常に動作していますが、親ノードに複数の子ノードがあり、複数の子ノードをチェックし、単一の子ノードのチェックを外すと、親ノードのチェックが外れます。
子ノードが選択されている場合、親ノードを選択するためのコードをいくつか実行しました。
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)
{
if (node.Parent != null)
{
node.Parent.Checked = isChecked;
SelectParents(node.Parent, isChecked);
}
}
その親の単一の子ノードのいずれかがチェックされている場合、チェックされていない親ノードは必要ありません。