在 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 属性的新类。另一种方法是维护一个禁用的树节点列表。

完成后,您可以使用TreeNodeForeColor 属性使其显示为灰色(例如使用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 和配置文件(灰显)

Visual Studio 下拉菜单中的灰显类方法

如何在 Tkinter 中禁用(灰显)一个 Checkbutton?

extjs 表单元素中的 Extjs 组合框在禁用时未灰显

根据到达日期值限制出发日期的日期范围[重复]