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

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

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

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

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

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

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

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

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

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

两种选择:

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

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

我想你还需要禁用可扩展的这个节点yourNode.PopulateOnDemand = false