从TreeView隐藏TreeNode

问题描述 投票:0回答:1

在我的程序中有一个用户权限,当用户登录到系统时,我要将这些权限从我在SQL数据库中保存的用户权限带到static变量中,我想限制用户不要单击允许的TreeNodes。因此,它正在从static变量值进行检查。在表单加载中,我写道:

if (bl_Static.AddReq != true)
{
    treeView1.Nodes.RemoveAt(6);
}

但是它不起作用。您能帮我吗?

c# treeview
1个回答
0
投票

我认为您正在调用错误的父节点的RemoveAt方法,因此目标节点如果不在TreeNodeCollectiontreeView1.Nodes中,则不会被删除。

要解决此问题,请使用TreeNodeCollection.Find方法通过其唯一键/名称找到目标节点,并检查调用正确集合的Remove方法是根节点还是子节点:

if (!bl_Static.AddReq)
{
    var tarNode = treeView1.Nodes.Find("GetTheNameFromTheDesigner", true).FirstOrDefault();

    if(tarNode != null)
    {
        if (tarNode.Parent != null)
            tarNode.Parent.Nodes.Remove(tarNode);
        else
            treeView1.Nodes.Remove(tarNode);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.