23

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

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

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

4

4 回答 4

28

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

完成后,您可以使用 的ForeColor属性TreeNode使其显示为灰色(例如使用SystemColors.GrayText值)。

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

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = !NodeIsEnabled(e.Node);
}
于 2009-09-22T20:59:00.017 回答
13

我刚刚找到了另一种处理禁用树节点的方法。如果您不想使用的树节点中的灰色,您可以要求颜色并且不允许所有灰色节点。

    private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
    {
        if(SystemColors.GrayText==e.Node.ForeColor)
            e.Cancel = true;
    }
于 2011-12-22T16:58:15.300 回答
0

两种选择:

  1. 动态添加和删除节点。
  2. 所有者绘制并处理点击并将其发送到另一个节点。
于 2009-09-22T20:54:51.983 回答
-2

设置禁用节点yourNode.SelectAction = TreeNodeSelectAction.None

我认为您还需要禁用可扩展此节点 yourNode.PopulateOnDemand = false

于 2015-12-14T15:33:15.453 回答