C# 在treeview asp.net中隐藏根节点

C# 在treeview asp.net中隐藏根节点,c#,asp.net,treeview,nodes,C#,Asp.net,Treeview,Nodes,在这种情况下,如何隐藏根节点“temp”文件夹? 我想在根节点上设置CssClass来完成此操作 TreeView TreeView1 = new TreeView(); protected void Page_Load(object sender, EventArgs e) { BuildTree(@"C:\temp"); form1.Controls.Add(TreeView1); } private void BuildTre

在这种情况下,如何隐藏根节点“temp”文件夹? 我想在根节点上设置CssClass来完成此操作

TreeView TreeView1 = new TreeView();
    protected void Page_Load(object sender, EventArgs e)
    {
        BuildTree(@"C:\temp");
        form1.Controls.Add(TreeView1);
    }
    private void BuildTree(string root)
    {
        DirectoryInfo rootDir = new DirectoryInfo(root);
        TreeNode rootNode = new TreeNode(rootDir.Name, rootDir.FullName);
        TreeView1.Nodes.Add(rootNode);
        TraverseTree(rootDir, rootNode);
    }
    private void TraverseTree(DirectoryInfo currentDir, TreeNode currentNode)
    {
        foreach (DirectoryInfo dir in currentDir.GetDirectories())
        {
            TreeNode node = new TreeNode(dir.Name, dir.FullName);
            currentNode.ChildNodes.Add(node);
            TraverseTree(dir, node);
        }
        foreach (FileInfo file in currentDir.GetFiles())
        {
            TreeNode nodeFile = new TreeNode(file.Name, file.FullName);
            currentNode.ChildNodes.Add(nodeFile);
        }
    }

代码已完成,只需更改桌面路径即可运行。

为什么不首先添加根节点,而是将所有直接子体设置为级别1节点:

TreeView TreeView1 = new TreeView();
protected void Page_Load(object sender, EventArgs e)
{
    BuildTree(@"C:\temp");
    form1.Controls.Add(TreeView1);
}
private void BuildTree(string root)
{
    DirectoryInfo rootDir = new DirectoryInfo(root);
    TreeNode rootNode = new TreeNode(rootDir.Name, rootDir.FullName);
    TraverseTree(rootDir, TreeView1.Nodes);
}
private void TraverseTree(DirectoryInfo currentDir, TreeNodeCollection nodeCollection)
{
    foreach (DirectoryInfo dir in currentDir.GetDirectories())
    {
        TreeNode node = new TreeNode(dir.Name, dir.FullName);
        nodeCollection.Add(node);                
        TraverseTree(dir, node.ChildNodes);
    }
    foreach (FileInfo file in currentDir.GetFiles())
    {
        TreeNode nodeFile = new TreeNode(file.Name, file.FullName);
        nodeCollection.Add(nodeFile);
    }
}

编辑:我已经修改了上面的代码,删除了我编写的
AddToNode
方法。前面的方法检查传入的currentNode对象是否为null,如果为null,则将其添加到TreeView的NodeCollection(否则添加到currentNode的ChildNodes集合)。相反,我不是在传递节点,而是在传递节点的NodeCollection—这意味着我们可以简化逻辑。)

很高兴它对您有效。我很快就把它组合起来了,所以我认为可以简化代码,我将编辑答案以反映简化。