【发布时间】:2010-02-09 18:10:07
【问题描述】:
您好,我有一个带有复选框的 treeView 控件:
复选框 LEVEL1
checkbox Child1
checkbox Child2
复选框 LEVEL2
checkbox Child1
我不允许选中和取消选中 Level 1 的 Child2 和 Level 2 的 Child 1?
这可能在树视图控件中吗?
【问题讨论】:
您好,我有一个带有复选框的 treeView 控件:
复选框 LEVEL1
checkbox Child1
checkbox Child2
复选框 LEVEL2
checkbox Child1
我不允许选中和取消选中 Level 1 的 Child2 和 Level 2 的 Child 1?
这可能在树视图控件中吗?
【问题讨论】:
问题是,TreeNode 没有启用状态,也没有您可以询问的任何事件。因此,要模拟启用状态,您可以使用 Tag 属性并在创建每个节点时在其中保存一个布尔值。
然后您将一个事件添加到 TreeView.BeforeCheck 并以某种方式实现:
void TreeView_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
var IsReadOnly = e.Node.Tag as bool?;
if (IsReadOnly != null)
{
e.Cancel = IsReadOnly.Value;
}
}
【讨论】:
据我所知,这是不可能的。但你可以自己模仿:
将节点颜色改为灰色:
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;
}
【讨论】: