c# - 如何在 TreeView 中显示目录?

标签 c# treeview

<分区>

下面是我的代码

DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\Shahul\Documents\Visual Studio 2010\Projects\TreeView\TreeView\bin\FileExplorer");

private void Form1_Load(object sender, EventArgs e)
{
    if (Directory.Exists("FileExplorer"))
    {
        try
        {
            DirectoryInfo[] directories = directoryInfo.GetDirectories();

            foreach (FileInfo file in directoryInfo.GetFiles())
            {
                if (file.Exists)
                {
                    TreeNode nodes = treeView.Nodes[0].Nodes.Add(file.Name);
                }
            }

            if (directories.Length > 0)
            {
                foreach (DirectoryInfo directory in directories)
                {
                    TreeNode node = treeView.Nodes[0].Nodes.Add(directory.Name);
                    node.ImageIndex = node.SelectedImageIndex = 0;
                    foreach (FileInfo file in directory.GetFiles())
                    {
                        if (file.Exists)
                        {
                            TreeNode nodes = treeView.Nodes[0].Nodes[node.Index].Nodes.Add(file.Name);
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

当我运行时,我只得到一个空白的 TreeView 表单?无法弄清楚错误是什么?

顺便说一句,这是我在 Stack Overflow 中的第一篇文章。

最佳答案

这应该可以解决您的问题,不过我在 WinForm 上试过了:

public Form1()
    {
        InitializeComponent();

        DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\hikuma\Documents\IR");
        if (directoryInfo.Exists)
        {
            treeView1.AfterSelect += treeView1_AfterSelect;
            BuildTree(directoryInfo, treeView1.Nodes);
        }
    }

    private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe)
    {
        TreeNode curNode = addInMe.Add(directoryInfo.Name);

        foreach (FileInfo file in directoryInfo.GetFiles())
        {
            curNode.Nodes.Add(file.FullName, file.Name);
        }
        foreach (DirectoryInfo subdir in directoryInfo.GetDirectories())
        {
            BuildTree(subdir, curNode.Nodes);
        }
    }

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if(e.Node.Name.EndsWith("txt"))
        {
            this.richTextBox1.Clear();
            StreamReader reader = new StreamReader(e.Node.Name);
            this.richTextBox1.Text = reader.ReadToEnd();
            reader.Close();
        }
    }

这是一个关于如何在富文本框中打开文件的简单示例,它可以改进很多:)。 如果有帮助,您可能想要标记为答案或投票 :) !!

关于c# - 如何在 TreeView 中显示目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16315042/

相关文章:

c# - 具有基类和子类的扩展方法

c# - 在 C# 中,打开任意应用程序

c# - 非字母和非数字的正则表达式

c# - 如何将 TreeView 复选框设置为部分选中?

c# - 过滤 TreeView 的所有节点和子节点

python - 使 Tkinter Treeview 中的节点不可选择

c# - 如何在 JSONP 响应中管理 '?

c# - uwp 标题栏中的后退按钮不可见

c# - Wpf TreeView 从上下文菜单获取项目

JavaFx TreeView css