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

mr-*_*uro 18 c# treeview visibility visual-studio

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

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

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

Fre*_*örk 26

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

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

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

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
    e.Cancel = !NodeIsEnabled(e.Node);
}
Run Code Online (Sandbox Code Playgroud)


小智 10

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

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