在TreeNode编辑器中禁用或灰显节点
如何禁用特定节点,以便用户无法选择它。 为用户隐藏它也是有效的。
我尝试了Visible属性,但隐藏了整个树(所有节点)。 我只想要一些节点被禁用/隐藏。
C#使用Visual Studio 2005 TreeNode编辑器。
TreeNode
本身没有任何Enabled
属性,因此您需要找到一些跟踪该状态的方法。 一种方法是创建一个inheritanceTreeNode
并具有Enabled
属性的新类。 另一种方法是维护已禁用的树节点列表。
完成后,您可以使用TreeNode
的ForeColor
属性使其显示为灰色(例如使用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; }
两种选择:
- 即时添加和删除节点。
- 所有者绘制并处理点击并将其发送到另一个节点。
通过yourNode.SelectAction = TreeNodeSelectAction.None
设置禁用节点
我想你还需要禁用可扩展的这个节点yourNode.PopulateOnDemand = false