【问题标题】:C# View filetree on form [duplicate]C#在表单上查看文件树[重复]
【发布时间】:2015-11-25 16:25:35
【问题描述】:

有没有办法直接在表单上查看文件系统,其功能类似于 Visual Studio C# 中的 OpenFileDialog(打开文件夹、选择文件)?

【问题讨论】:

  • 是的,当然有。如果您询问是否有内置控件可以放在表单上,​​那么没有。否则方法是使用System.IOFileDirectory类来递归驱动器上的条目,我建议延迟加载。
  • 没有什么比尝试实现自己的文件浏览器的应用程序更让我烦恼的了。

标签: c# winforms


【解决方案1】:

试试这个:

private void Button1_Click(object sender, EventArgs e)
{
     ListDirectory("Your TreeView Name here", "root path")
}

private void ListDirectory(TreeView tv, string path)
{
    tv.Nodes.Clear();
    var rootDirectoryInfo = new DirectoryInfo(path);
    tv.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo));
}

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo)
{
    var directoryNode = new TreeNode(directoryInfo.Name);
    foreach (var directory in directoryInfo.GetDirectories())
        directoryNode.Nodes.Add(CreateDirectoryNode(directory));
    foreach (var file in directoryInfo.GetFiles())
        directoryNode.Nodes.Add(new TreeNode(file.Name));
    return directoryNode;
}

【讨论】:

  • 这是一个跨线程违规,原则上它是正确的,但使用类似根路径的东西会导致应用程序在递归加载整个驱动器时停止响应。如果文件夹路径足够深,您也可能会遇到堆栈溢出异常。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多