C# TreeView 磁盘文件,资源管理器,AfterSelect,显示加号

来源:互联网 发布:一国两智 知乎 编辑:程序博客网 时间:2024/04/27 13:42

可以看到,项的前面都显示了加号(+),而且读取了磁盘的文件。代码如下

主程序代码:

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("");

这些都是添加空节点的方式来显示 “加号”。。。然后正式加载的时候删掉

原创粉丝点击