私は treeview を使用しています。このコードフォームから、親ノードまたは子ノードを選択するときにすべての子ノードをチェックおよびチェック解除して使用します
private bool updatingTreeView;
private void CheckChildren_ParentSelected(TreeNode node, Boolean isChecked)
{
foreach (TreeNode item in node.Nodes)
{
item.Checked = isChecked;
if (item.Nodes.Count > 0)
{
this.CheckChildren_ParentSelected(item, isChecked);
}
}
}
private void SelectParents(TreeNode node, Boolean isChecked)
{
//MessageBox.Show(node.Parent.ToString());
if (node.Parent != null)
{
node.Parent.Checked = isChecked;
SelectParents(node.Parent, isChecked);
}
}
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (updatingTreeView) return;
updatingTreeView = true;
CheckChildren_ParentSelected(e.Node, e.Node.Checked);
SelectParents(e.Node, e.Node.Checked);
updatingTreeView = false;
}
でも今
ここに問題があります:
子ノードのチェックを外すと、ツリービューですべての子ノードのチェックを外すだけです。
この写真のように:
しかし、私のコードでは、すべての親と子 (両方) がチェックされていません!!!
だから今、ツリービューのすべての子ノードのみをチェック解除する方法を知りたいのですが、
この問題を修正するためにこのコードを変更する方法は?
敬具。