在TreeNode编辑器中禁用或灰显节点

时间:2009-09-22 20:50:43

标签: c# visual-studio treeview visibility

如何禁用特定节点,以便用户无法选择它。为用户隐藏它也是有效的。

我尝试了Visible属性但隐藏了整个树(所有节点)。我只想要一些节点被禁用/隐藏。

使用Visual Studio 2005 TreeNode编辑器进行C#。

4 个答案:

答案 0 :(得分:26)

TreeNode本身没有任何Enabled属性,因此您需要找到一些跟踪该状态的方法。一种方法是创建一个继承TreeNode且具有Enabled属性的新类。另一种方法是维护已禁用的树节点列表。

完成后,您可以使用TreeNode的{​​{3}}属性使其显示为灰色(例如使用ForeColor值。)

最后,您可以使用SystemColors.GrayText事件来评估用户是否可以选择特定节点,并使用该事件中事件args的Cancel属性来阻止选择它节点被禁用:

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = !NodeIsEnabled(e.Node);
}

答案 1 :(得分:10)

我刚刚找到另一种方法来处理禁用的treenodes。如果您在不想使用的treenodes中显示灰色,则可以询问颜色并且不允许所有灰色节点。

    private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
    {
        if(SystemColors.GrayText==e.Node.ForeColor)
            e.Cancel = true;
    }

答案 2 :(得分:0)

两个选项:

  1. 动态添加和删除节点。
  2. 所有者绘制并处理点击并将其发送到另一个节点。

答案 3 :(得分:-2)

Type | respons weight 3.18456 malf 0 weight 4.2433 malf 1 weight 3.8543 malf 0 weight 4.0123 malf 1 weight 4.15 malf 1

设置已停用的节点

我认为你还需要禁用可扩展的这个节点 yourNode.SelectAction = TreeNodeSelectAction.None