你好,我有复选框TreeView控件:禁用某些节点
复选框LEVEL1
checkbox Child1
checkbox Child2
复选框LEVEL2
checkbox Child1
我shloul不允许检查和CHILD2的取消选中1级和1级2级?
这是可能的树视图控制?
你好,我有复选框TreeView控件:禁用某些节点
复选框LEVEL1
checkbox Child1
checkbox Child2
复选框LEVEL2
checkbox Child1
我shloul不允许检查和CHILD2的取消选中1级和1级2级?
这是可能的树视图控制?
的问题是,一个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;
}
}
据我所知,这是不可能的。但是你可以自己效仿:
改变节点颜色为灰色:
treeControl.Nodes[0].ForeColor = Color.Gray;
,赶上click事件:
private void treeControl_AfterCheck(TreeControl tc,
NodeEventArgs e)
{
if(e.Node.ForeColor == Color.Gray)
e.Node.Checked = !e.Node.Checked;
}
是的,在检查之前。逻辑可能不需要标签。 – 2010-02-09 10:53:25
事实上,上述逻辑不需要标签。但是为了在每个BeforeCheck事件中让它更简单(更快),我将确定节点在创建节点时是否可检查,然后检查BeforeCheck的结果(如果这不可能考虑另一个缓存解决方案) – Oliver 2010-02-09 11:41:51