C# 当选中父节点的所有子节点时,如何禁用父节点中的复选框

C# 当选中父节点的所有子节点时,如何禁用父节点中的复选框,c#,winforms,treeview,C#,Winforms,Treeview,我想在选中所有节点和子节点后,禁用用户更改树视图中复选框的状态。这是我在treeview中检查所有项目的方式: private void CheckItems() { foreach (TreeNode node in tvSastavnica.Nodes) { node.Checked = true; CheckChildren(node, true); } } private void CheckChildren(TreeNode rootNode,

我想在选中所有节点和子节点后,禁用用户更改树视图中复选框的状态。这是我在treeview中检查所有项目的方式:

private void CheckItems()
{
   foreach (TreeNode node in tvSastavnica.Nodes)
   {
     node.Checked = true;
     CheckChildren(node, true);
   }
}

private void CheckChildren(TreeNode rootNode, bool isChecked)
{
    foreach (TreeNode node in rootNode.Nodes)
    {
      CheckChildren(node, isChecked);
      node.Checked = isChecked;
    }
 }

现在,我想灰色或以某种方式锁定复选框,以防止改变状态。有可能吗?

您可以使用检查前检查后事件执行此操作:

private void tvSastavnica_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = true;
}
或:


将你的treeview的Enabled属性设置为false,这样可以吗?不幸的是不行,因为我无法滚动或搜索treeview。
private void tvSastavnica_AfterCheck(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = true;
}