C# TreeView 磁盘文件,资源管理器,AfterSelect,显示加号
可以看到,项的前面都显示了加号(+),而且读取了磁盘的文件。代码如下
主程序代码:
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 FileManager{ public partial class Main : Form { public Main() { InitializeComponent(); } /// <summary> /// 加载逻辑磁盘文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Main_Load(object sender, EventArgs e) { DriveInfo[] myDrivers = DriveInfo.GetDrives(); foreach (DriveInfo di in myDrivers) { if (di.IsReady) { TreeNode tNode = new TreeNode(di.Name.Split(':')[0]); tNode.Name = di.Name; tNode.Tag = tNode.Name; tNode.Nodes.Add("DUMMY"); tvRoot.Nodes.Add(tNode); } } //添加鼠标右键的事件 this.tvRoot.ContextMenuStrip = new TreeViewContextMenu().Load(); } /// <summary> /// TreeView必须处理的两个事件之一 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRoot_AfterSelect(object sender, TreeViewEventArgs e) { e.Node.Expand(); } /// <summary> /// TreeView必须处理的两个事件之一 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvRoot_BeforeExpand(object sender, TreeViewCancelEventArgs e) { TreeViewItems.Add(sender, e); } }}
为TreeView添加TreeNode的代码:
public static class TreeViewItems { public static void Add(object sender, TreeViewCancelEventArgs e) { e.Node.Nodes.Clear(); TreeNode tNode = e.Node; //MessageBox.Show(tNode.Name); string path = tNode.Name; string[] dics = Directory.GetDirectories(path); foreach (string dic in dics) { TreeNode subNode = new TreeNode(new DirectoryInfo(dic).Name); subNode.Name = new DirectoryInfo(dic).FullName; subNode.Tag = subNode.Name; subNode.Nodes.Add(""); tNode.Nodes.Add(subNode); } string[] files = Directory.GetFiles(path); foreach (string aFile in files) { TreeNode subNode = new TreeNode(new FileInfo(aFile).Name); subNode.Tag = aFile; subNode.Name = subNode.Text; tNode.Nodes.Add(subNode); } } }
这里注意e.Node.Nodes.Clear();还有给节点的下面添加一个空的节点:如
tNode.Nodes.Add("DUMMY");
和
subNode.Nodes.Add("");
这些都是添加空节点的方式来显示 “加号”。。。然后正式加载的时候删掉