Treeview用于显示按照树形结构进行组织的数据。Treeview控件中一个树形图由节点(TreeNode)和连接线组成。TreeNode是Treeview的基本组成单元。
用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.Reflection;
using System.IO;
namespace 资料管理器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//获取当前正在执行的程序集(exe文件)的路径
string exePath = Assembly.GetExecutingAssembly().Location;
//加载文件结构到TreeView
//得到demo文件夹的完整路径
string path = Path.Combine(Path.GetDirectoryName(exePath), "demo");
LoadDataToTree(path, treeView1.Nodes);
}
//递归加载
private void LoadDataToTree(string path, TreeNodeCollection treeNodeCollection)
{
//1.获取path下的所有子文件和子文件夹的路径
string[] files = Directory.GetFiles(path, "*.txt");
string[] dirs = Directory.GetDirectories(path);
//2.遍历文件与文件夹加载到TreeView上
//遍历文件
foreach (string item in files)
{
TreeNode node = treeNodeCollection.Add(Path.GetFileName(item));
//如果是文件节点,则把当前节点的完整路径保存在节点的Tag属性中
node.Tag = item;
}
//遍历文件夹
foreach (string item in dirs)
{
TreeNode node = treeNodeCollection.Add(Path.GetFileName(item));
//递归调用
LoadDataToTree(item, node.Nodes);
}
}
//TreeView的节点的鼠标双击事件
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node.Tag != null)//表示点击的是文件节点
{
//获取当前双击的节点的Tag中存储的路径
string currentPath = e.Node.Tag.ToString();
//e.Node.Parent
//根据该路径读取对应的文件内容
string txt = File.ReadAllText(currentPath, Encoding.Default);
textBox1.Text = txt;
}
}
}
}
说点什么
欢迎讨论