在 TreeNode 编辑器中禁用或灰显节点
Posted
技术标签:
【中文标题】在 TreeNode 编辑器中禁用或灰显节点【英文标题】:Disable or grey out a node in the TreeNode Editor 【发布时间】:2010-11-30 13:21:41 【问题描述】:如何禁用特定节点以使用户无法选择它。为用户隐藏也是有效的。
我尝试了 Visible 属性,但它隐藏了整个树(所有节点)。我只想禁用/隐藏一些节点。
C# 使用 Visual Studio 2005 TreeNode 编辑器。
【问题讨论】:
【参考方案1】:TreeNode
本身没有任何Enabled
属性,因此您需要找到一些方法来跟踪该状态。一种方法是创建一个继承TreeNode
并具有Enabled
属性的新类。另一种方法是维护一个禁用的树节点列表。
完成后,您可以使用TreeNode
的ForeColor
属性使其显示为灰色(例如使用SystemColors.GrayText
值)。
最后,您可以使用BeforeSelect
事件来评估用户是否可以选择特定节点,并在该事件中使用事件参数的Cancel
属性来防止在该节点被禁用时选择它:
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
e.Cancel = !NodeIsEnabled(e.Node);
【讨论】:
【参考方案2】:我刚刚找到了另一种处理禁用树节点的方法。如果您不想使用的树节点中的灰色,您可以要求颜色并且不允许所有灰色节点。
private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
if(SystemColors.GrayText==e.Node.ForeColor)
e.Cancel = true;
【讨论】:
当然,如果使用 CheckBox 属性,还需要处理 BeforeCheck 事件: private void TreeView_BeforeCheck(object sender, TreeViewCancelEventArgs e) if (SystemColors.GrayText == e.Node. ForeColor) e.Cancel = true; 【参考方案3】:两种选择:
-
动态添加和删除节点。
所有者绘制并处理点击并将其发送到另一个节点。
【讨论】:
【参考方案4】:通过yourNode.SelectAction = TreeNodeSelectAction.None
设置禁用节点
我认为您还需要禁用可扩展此节点
yourNode.PopulateOnDemand = false
【讨论】:
TreeNodeSelectAction 在 System.Web.UI.WebControls 命名空间中。问题是关于 Windows 窗体的。干杯以上是关于在 TreeNode 编辑器中禁用或灰显节点的主要内容,如果未能解决你的问题,请参考以下文章
无法在 chrome 中编辑 CSS STYLE 属性(灰显并被阻止)
iOS 开发者门户:无法添加或编辑应用程序 ID 和配置文件(灰显)