使用WinFrom控件-TreeView

来源:互联网 发布:thinkphp新闻系统源码 编辑:程序博客网 时间:2024/05/09 07:46

 

使用WinFrom控件-TreeView
 
为了后续课程的学习,今天老师讲了一个新的控件-TreeView,说实话,上课真的没听明白,回家看了一晚上才弄懂,哎,我太愚钝了.
 
定义一个TreeView控件命名为tv
private void frmTreeView_Load(object sender, EventArgs e)
{
TreeNode node1 = new TreeNode(); //创建TreeView节点
node1.Text = "C://"; //树节点标签显示的文本
TreeNode node2 = new TreeNode();
node2.Text = "D://";
 
TreeNode childNode1 = new TreeNode();
childNode1.Text = "Programs";
node1.Nodes.Add(childNode1); //将childNode1添加为node1的子节点
 
tv.Nodes.Add(node1); //将根节点添加到TreeView控件中
tv.Nodes.Add(node2);
}
 
应用进阶:制作一个类似windows资源管理器的窗口,使用TreeView控件显示计算机磁盘及目录结构.
 
第一步:添加根目录
DriveInfo[] drive = DriveInfo.GetDrives();//获取计算机所有逻辑启动器名,返回一个DriveInfo类型数组
foreach (DriveInfo var in drive) //遍历drive 将驱动器名写入根节点
{
    TreeNode node = new TreeNode();
node.Text = var.ToString();
//………这里要添加子目录
    tv.Nodes.Add(node);
}
 
第二步:添加子目录,定义一个方法
///<summary>
///把path下的子目录都添加到node上
///</summary>
///<param name="path">当前路径</param>
///<param name="node">当前节点</param>
public void addPath(string path,TreeNode node)
{
string[] childPath = Directory.GetDirectories(path);//获取当前目录中子目录,返回string类型数组
foreach (string var in childPath) //遍历childPath
{
TreeNode nodeChild = new TreeNode();
node.Nodes.Add(nodeChild);
addPath(var,nodeChild);//如果子目录下还有子目录就一直循环到没有子目录为止
}
}
 
将以上方法应用到程序主体:
 
DriveInfo[] drive = DriveInfo.GetDrives();
foreach (DriveInfo var in drive)
 {
       int i = var.LastIndexOf('//'); //取出多余路径
     string varStu = var;
     if (i > 0)
     {
       varStu = var.Substring(i+1);
     }
    TreeNode node = new TreeNode(varStu); //(varStu)等同于node.Text= var;
node.Text = var.ToString();
addPath(var.ToString(),node); //………这里要添加子目录
    tv.Nodes.Add(node);
}
 
2010/03/28 整理
原创粉丝点击