禁用树控件的某些节点

时间:2010-02-09 09:38:38

标签: c# winforms

你好我有一个带有复选框的treeView控件:

复选框LEVEL1

  checkbox Child1
  checkbox Child2

复选框LEVEL2

  checkbox Child1

我不允许检查和取消检查Level 1的Child2和Level 2的Child 1?

是否可以在树视图控件中使用?

2 个答案:

答案 0 :(得分:1)

问题是,TreeNode没有启用状态,也没有任何可以询问的事件。因此,为了模拟Enabled状态,您可以使用Tag属性并在创建每个节点时保存一个布尔值。

然后你将一个事件添加到TreeView.BeforeCheck并以某种方式实现:

void TreeView_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
    var IsReadOnly = e.Node.Tag as bool?;

    if (IsReadOnly != null)
    {
        e.Cancel = IsReadOnly.Value;
    }
}

答案 1 :(得分:0)

据我所知,这是不可能的。但你可以自己模仿它:

将节点颜色更改为灰色:

treeControl.Nodes[0].ForeColor = Color.Gray;

抓住点击事件:

private void treeControl_AfterCheck(TreeControl tc,
                                            NodeEventArgs e)
{
  if(e.Node.ForeColor == Color.Gray)
    e.Node.Checked = !e.Node.Checked;
}