`
xqf222
  • 浏览: 128866 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C#使用线程加载指定目录下的所有子目录和文件名称到TreeView中

 
阅读更多

界面设计步骤:

从工具箱中拖放一个TreeView(teeView1)和一个Button(button1)到WinForm窗体中

添加引用:

using System.Threading;
using System.IO;

详细代码:


#region 目录树委托定义
private delegate void UpdateTreeViewDelegate(TreeNode node);//声明委托类型
private static string CurrentFolderPath;
#endregion

#region 目录树节点操作函数
/// <summary>
/// 加载节点到TreeView中
/// </summary>
/// <param name="node">TreeNode</param>
private void AddToTreeView(TreeNode node)
{
treeView1.Nodes.Add(node);
treeView1.Refresh();
}
/// <summary>
/// 递归加载指定目录下的所有子目录和文件树
/// </summary>
/// <param name="reg">指定目录路径</param>
/// <param name="nodes">起始树,将在它下面建立所有子结点</param>
internal void LoadFolderFileList(string path, TreeNode nodes)
{
string[] dirs = Directory.GetDirectories(path);
string[] files = Directory.GetFiles(path);
for (int i = 0; i < dirs.Length; i++)
{
string[] info = new string[4];
DirectoryInfo di = new DirectoryInfo(dirs[i]);
TreeNode node = new TreeNode(di.Name);
node.Tag = di.FullName;
try
{
if (di.GetDirectories().Length > 0 || di.GetFiles().Length > 0)
{
LoadFolderFileList(di.FullName, node);
}
else
{
continue;
}
}
catch
{
continue;
}
nodes.Nodes.Add(node);
}
for (int i = 0; i < files.Length; i++)
{

FileInfo fi = new FileInfo(files[i]);
TreeNode node = new TreeNode(fi.Name);
node.Tag=fi.FullName;
nodes.Nodes.Add(node);

}
}

#endregion

#region 按钮事件
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog myFolderBrowserDialog = new FolderBrowserDialog();
myFolderBrowserDialog.ShowDialog();
if (myFolderBrowserDialog.SelectedPath != "")
{
CurrentFolderPath = myFolderBrowserDialog.SelectedPath;
Thread thread = new Thread(new ThreadStart(LoadFolderMethod));
thread.Start();
}
}
#endregion

#region 线程方法
/// <summary>
/// 获取指定目录下的所有子目录和文件
/// </summary>
private void LoadFolderMethod()
{
UpdateTreeViewDelegate loadTreeView = new UpdateTreeViewDelegate(AddToTreeView);
string[] myPath=CurrentFolderPath.Split('\\');
TreeNode node=new TreeNode();
string path;
foreach (string s in myPath)
{
path=s+"\\";
node = new TreeNode(s);
node.Tag = path;
}
LoadFolderFileList(CurrentFolderPath, node);
if (treeView1.InvokeRequired)//将读取的根加载至TreeView
treeView1.BeginInvoke(loadTreeView, node);
else
{
treeView1.Nodes.Add(node);
}
}
#endregion

分享到:
评论

相关推荐

    C#WinForm利用TreeView查找电脑目录

    例如,我们可以用`Directory.GetFiles()`和`Directory.GetDirectories()`方法获取指定目录下的文件和子目录。 下面是一个简单的步骤来实现这个功能: 1. 创建一个新的WinForm项目,从工具箱中拖放一个`TreeView`...

    [C#]TreeView控件使用之磁盘目录查看器

    在这个特定的案例中,我们关注的是如何利用C#编程来实现一个磁盘目录查看器,通过`TreeView`控件来显示计算机中的文件夹和文件结构。 首先,我们需要理解`TreeView`的基本用法。`TreeView`控件由一系列的`TreeNode`...

    C# TreeView 目录结构

    在这个场景下,"C# TreeView 目录结构"指的是使用TreeView控件来模拟和操作计算机的文件目录结构。让我们深入探讨如何在C#中实现这一功能。 首先,你需要创建一个TreeView控件并在窗体上放置它。在Visual Studio的...

    获取Linux下Ftp目录树并逐步绑定到treeview

    这通常通过递归调用`ftp`命令的`cd`和`ls`命令实现,将每个目录的子目录和文件添加到数据结构中,如树形结构。 3. **Python的ftplib模块**:在Python中,可以使用内置的`ftplib`模块来编程方式地操作FTP。这个模块...

    c# treeview硬盘驱动目录树

    在这个特定的项目中,“c# treeview硬盘驱动目录树”是指利用C#语言和`TreeView`控件来构建一个可视化的文件系统结构,展示硬盘驱动器上的目录和文件。下面我们将深入探讨如何实现这样的功能。 首先,我们需要理解`...

    使用treeview listview实现我的资源管理器

    可以编写一个递归函数,接收当前目录路径作为参数,遍历该目录下的所有文件和子目录。对于每个文件,创建一个新的`ListViewItem`并添加到`ListView`中;对于每个子目录,创建一个新的`TreeNode`并添加到`TreeView`中...

    C# ListView和TreeView实现资源管理介面例子

    在C#编程中,ListView和TreeView是两种常用的控件,它们在Windows Forms和WPF应用程序中广泛用于数据的展示和管理。这两个控件各有特点,适用于不同的数据展示场景。 ListView控件是一个强大的列表视图,它能够以...

    树目录文件浏览器_C#_文件浏览器_

    它可以用来获取目录的属性,如名称、路径,以及列出其包含的子目录和文件。 4. **ListView控件**:当用户选择TreeNode(目录节点)时,ListView控件将显示所选目录中的文件列表。可以使用ListView控件的不同视图...

    C#文件浏览器源代码示例

    3. **遍历文件系统**:源代码中会使用Directory.GetDirectories()和Directory.GetFiles()方法来递归地遍历指定目录及其子目录,获取所有子目录和文件的路径。这些路径随后会被添加到TreeView或ListView中供用户浏览...

    简单的C#文件浏览源码

    例如,使用Directory.GetFiles和Directory.GetDirectories方法获取文件和子目录,然后用这些信息创建TreeNode对象,添加到TreeView控件中。 5. 用户交互:Winform允许通过事件驱动编程来响应用户的操作。例如,当...

    C#文件浏览器

    例如,`DirectoryInfo`和`FileInfo`用于获取目录和文件信息,`Directory.GetFiles()`和`Directory.GetDirectories()`用于检索指定目录下的文件和子目录,`File.OpenRead()`和`File.OpenWrite()`用于读写文件内容。...

    C#本地文件浏览器

    例如,Directory类的GetDirectories()和GetFiles()方法可以获取指定目录下的子目录和文件。 2. 路径处理:Path类提供了Combine、GetDirectoryName、GetFileName等方法,用于处理文件和目录的路径。这些方法确保了...

    c# 资源管理器程序,TreeView,ListView

    在C#编程中,开发资源管理器类程序是一项常见的任务,它可以帮助用户浏览和操作文件系统。在这个场景中,`TreeView`和`ListView`控件是实现这一目标的关键组件。让我们深入了解一下这两个控件以及如何在C#中利用它们...

    C#实现的文件管理器

    - **遍历目录**:`Directory.GetFiles`和`Directory.GetDirectories`用于获取指定目录下的文件和子目录列表。结合递归,可以遍历整个文件结构。 3. **路径处理**: - `Path`类提供了一系列静态方法,如`Combine`...

    文件资源管理器C#.zip

    在C#中,`System.IO`命名空间提供了`Directory`和`DirectoryInfo`类,用于处理目录操作,如获取子目录、创建新目录等。 2. **文件查看**:用户应能看到指定目录中的文件列表,包括文件名、大小、修改日期等信息。`...

    C#显示磁盘目录信息源代码

    在这个源码中,可能会使用`Directory.GetDirectories()`和`Directory.GetFiles()`方法来获取指定目录下的子目录和文件。 2. 遍历文件和目录:为了显示整个目录树,你需要递归地遍历每个子目录。这通常通过递归函数...

    使用C#编写一个 资源管理器程序

    我们可以通过实例化DirectoryInfo对象,调用其GetDirectories()和GetFiles()方法来获取指定目录下的子目录和文件。 6. **FileInfo类**:与DirectoryInfo类类似,FileInfo类用于处理单个文件的信息,如大小、创建...

    计算机软件-商业源码-43 使用TreeView控件显示目录中的内容.zip

    `DirectoryInfo.GetDirectories()`和`GetFiles()`方法分别用于获取子目录和文件,然后将这些信息转化为TreeNode添加到TreeView中。 3. **递归遍历**: 为了显示整个目录结构,需要编写一个递归函数。该函数接受一...

    文件夹目录文件结构获取

    前者用于获取指定目录下的所有子目录,后者获取所有文件。这两个方法可以递归调用,构建出整个目录树。 3. **树形结构表示**: 将目录结构转换为树形结构,通常使用数据结构如`TreeNode`(在Windows Forms中的`...

    C#文件管理系统.....................

    - **遍历目录**:`Directory.GetFiles()`和`Directory.GetDirectories()`用于获取指定目录下的文件和子目录列表。 3. **文件流操作**: - **FileStream**:用于读写文件的二进制数据流。它提供了一种处理大文件...

Global site tag (gtag.js) - Google Analytics