个人觉得TreeView是比较复杂的一个控件,网上的例子多如牛毛,但是这些例子要么非常复杂、让初学者望而却步,要么语焉不详。其实我们很多时候只需要掌握关键知识点就可以了,其它特别的定制化需求再不断完善扩充就可以了。
下面这个例子可以获取指定文件夹下面的所有子文件夹,其实关键就是一个递归,非常简单。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace TV1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//s返回指定文件夹下面的子文件夹,如果要返回所有驱动器请使用GetLogicalDrives()方法
string[] s = Directory.GetDirectories("E:\\程序设计教材");
foreach (string m in s)
{
//父节点,即指定文件夹下面的所有子文件夹
TreeNode node = new TreeNode(m);
//添加所有父节点
this.treeView1.Nodes.Add(node);
//调用递归方法,通过递归将该文件夹下面的子文件夹,包括嵌套的子文件作为节点添加到TreeView
AddNode(m, node);
}
}
private void AddNode(string path,TreeNode tn)
{
string[] s1 = Directory.GetDirectories(path);
TreeNode subNode = new TreeNode();
foreach (string j in s1)
{
subNode = new TreeNode(j);
tn.Nodes.Add(subNode);
AddNode(j, subNode);
}
}
}
}