早上赶工要搞个treeview显示树状目录,好久没用treeview了到csdn下载了个需要50c币,现在自己写了个,效果还行,下载Demo只需要5C币
效果如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TreeViewDemo
{
public partial class Form1 : Form
{
/// <summary>
/// 当前选中的文件路径
/// </summary>
private string currentfilePath="";
public Form1()
{
InitializeComponent();
this.treeView1.ImageList = imageList1;
TreeNode node = new TreeNode();
string path = @"C:\";
this.MakeTreeViewNodes(node, path);
node.Text = "目录";
this.treeView1.Nodes.Add(node);
}
/// <summary>
/// 当某个节点被展开的时候则从该节点开始往下遍历2级目录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
string dirPath = e.Node.Name;
if (string.IsNullOrEmpty(dirPath))
{
return;
}
if (e.Node.Tag != null && e.Node.Tag.ToString() != "Dir")
{
return;
}
this.MakeTreeViewNodes(e.Node, dirPath);
}
/// <summary>
/// 动态生成treeview节点
/// </summary>
/// <param name="node"></param>
/// <param name="path"></param>
private void MakeTreeViewNodes(TreeNode node, string path)
{
node.Nodes.Clear();
DirectoryInfo directoryInfo = new DirectoryInfo(path);
var fileArr = directoryInfo.GetFiles("*.*");
if (fileArr != null && fileArr.Length > 0)
{
for (int i = 0; i < fileArr.Length; i++)
{
TreeNode tn = new TreeNode();
tn.Name = fileArr[i].FullName;
tn.Text = Path.GetFileName(fileArr[i].FullName); //显示名称
tn.Tag = "File";
tn.ImageIndex = 1;
node.Nodes.Add(tn);
}
}
var dirArr = directoryInfo.GetDirectories();
if (dirArr != null && dirArr.Length > 0)
{
foreach (var item in dirArr)
{
//过滤隐藏文件夹
if (item.Attributes.ToString().IndexOf("Hidden") > -1) // && item.Attributes.ToString().IndexOf("System") > -1
{
continue;
}
TreeNode tn = new TreeNode();
tn.Name = item.FullName;
tn.Text = item.Name;
tn.Tag = "Dir";
tn.ImageIndex = 0;
if (item.GetFiles().Length > 0||item.GetDirectories().Length>0)
{
TreeNode tt = new TreeNode();
tn.Nodes.Add(tt);
}
node.Nodes.Add(tn);
}
}
}
/// <summary>
/// 单击选中node
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
var node = e.Node as TreeNode;
if (node == null)
{
return;
}
if (node.Tag != null && node.Tag.ToString() == "File")
{
if (!string.IsNullOrEmpty(node.Name))
{
if (!currentfilePath.Equals(node.Name))
{
node.SelectedImageIndex = 1;
//你可以在此根据文件具体类型 打开或者其他操作
currentfilePath = node.Name;
}
}
}
}
}
}
下载链接:https://download.csdn.net/download/asa_jim/11579674
要是csdn给涨所需下载币了,劳烦回复下 我重新上传个!