如何在TreeView中显示目录? [复制]

2024-02-04

下面是我的代码

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);
        }
    }
}

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

顺便说一句,这是我在 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();
        }
    }

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在TreeView中显示目录? [复制] 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 有没有办法让跟踪显示 Kogito 中为 DMN 执行的决策顺序?

    我终于运行了我的 dmn quarkus 示例示例 是否有一个属性可以启用跟踪 以便打印执行的决策序列 我注意到 当我为 DMN 模型提供不正确的 JSON 时 Kogito 会做出详细响应 告诉我哪个决策失败了 这太棒了 是否有一个属性可
  • 实体框架代码优先 - 非主键字段的外键

    我有两张表 如下所示 dbo ReviewType ReviewTypeId INT PRIMARY KEY ShortName CHAR 1 Unique Index Description dbo Review ReviewId INT
  • 等待 Casper.js 中的 URL 更改?

    有一个waitForUrl 功能在Casper js 但是有可能吗waitForUrlChange in Casper js 我的意思是检测到变化this getCurrentUrl 价值 我无法预测新的 url 值 它可以是任何东西 有一
  • 多个进程上的 fs.createWriteStream

    如何实现多个 Node js 进程写入同一个文件的系统fs createWriteStream 这样它们就不会覆盖数据 看起来 fs createWriteStream 的默认设置是在调用该方法时清除文件 我的目标是清除一次文件 然后让所有
  • MongoDB:聚合并展平数组字段

    在使用关系数据库 SQL Server MySQL Oracle Informix 28 年之后 我已转向 MongoDB 过去两周进展缓慢 我想提出几个问题来证实我的想法 我的文档如下所示 忽略此问题的分组 id xyz 800 site
  • emberjs 1.0.0pre4 如何将上下文对象传递给资源“...Index”路由?

    在一个简单的 ember 应用程序中 我有一个带有索引模板的资源 详细信息 在应用程序索引模板中 我有一个调用的按钮transitionTo detail obj 在索引控制器上 其中obj是被单击的内容项 这通过obj as the mo
  • ruby 中的反引号和单引号错误消息 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么 ruby 在错误消息中使用反引号和单引号 bad method NameError undefined local variable o
  • Android获取外部存储绝对路径

    我想下载一些文件并将它们保存到手机 平板电脑的内部存储中 已在 Samsung Galaxy Note 2 和 Galaxt Tab 10 1 上试用 当我使用 storage sdcard0 在他们身上 代码运行成功 但是当我使用Gala
  • Require.js 忽略 baseUrl

    好吧 这让我发疯 所以也许有人可以指出我正确的方向 我使用最新的 require js 和 jquery 作为我的模块加载器 我正在使用data main属性指向一个配置文件baseUrl 当我尝试加载模块时baseUrl被忽略 并且 re
  • Flash:距 MovieClip 最近的点

    我需要限制一个点内DisplayObject艺术家给我的 我让它工作 但仅适用于光标仍在内部的情况bounds 有限对象称为limited function onSqMouseMove event MouseEvent if bounds
  • 在画布中移动按钮

    当鼠标悬停在 UIElement 上并且用户按下 Ctrl 键时 以下代码应该在画布中移动 UIElement void keydown Object sender KeyEventArgs e if e Key Key LeftCtrl
  • 如何运行本地 Windows 应用程序并将输出通过管道传输到浏览器

    我有 Windows 应用程序 EXE 文件是用 C 编写并使用 MS Visual Studio 构建的 它将 ASCII 文本输出到标准输出 我希望增强 ASCII 文本以包含有限的 HTML 和一些链接 我想调用此应用程序 EXE 文
  • 将向量列表转换为计数数据帧[重复]

    这个问题在这里已经有答案了 我有一个存储在如下列表中的字符向量列表 basket1 lt c Apple Orange Banana Apple Apple Grape basket2 lt c Grape Grape Grape Grap
  • 如何获取适配器内的视图高度以创建大小的位图?

    我将自定义 CursorAdapter 与自定义项一起使用 我需要视图高度来调整资源文件夹中位图的大小 并将此调整大小的位图设置为列表项中的 ImegeView Override public void bindView View view
  • 在 Firefox 中检测缩放

    我想检测浏览器是否放大或缩小 并不真正关心知道该值 但我认为无论如何都需要在决策过程中找到它 我已经阅读了很多关于该主题的其他 SO 帖子 但是没有一个给出的解决方案适用于 FF 尽管有 IE7 8 和 chrome 解决方案 哦 我不能使
  • 如何强制在派生类中调用基类构造函数?

    我相当确定基本的 C 问题 如果我有一个带有不带参数的构造函数的基类 并且只初始化一些受保护的成员 如果派生类与参数匹配 它是否也会立即调用此基构造函数 一厢情愿但不太可能的想法 如果不是 则为有没有办法强制它从派生类自动调用所述基构造函数
  • 数据绑定:如果属性不为空,则设置属性

    无法理解 仅当变量字段不为空时如何设置视图的某些属性 例如
  • 检查 python 类属性

    我需要一种方法来检查类 以便我可以安全地识别哪些属性是用户定义的类属性 问题是 dir inspect getmembers 等函数返回所有类属性 包括预定义的属性 例如 class doc dict hash 这当然是可以理解的 有人可能
  • 使用 VSTS 设置发布到文件夹

    我正在使用publish to folder通过右键单击项目 gt 发布 gt 发布到文件夹 通过 Visual Studio 选项 结果始终是已应用转换的可复制项目 我想使用 VSTS 自动化此过程并在 VSTS 上进行设置 我使用了后续
  • 如何在TreeView中显示目录? [复制]

    这个问题在这里已经有答案了 下面是我的代码 DirectoryInfo directoryInfo new DirectoryInfo C Users Shahul Documents Visual Studio 2010 Projects