设置TreeView:
ImageList属性:添加一个imageList控件,如上图往imageList中添加一些图标
下面是加载节点代码: 引用"IO"命名空间
using System.IO;
/// <summary> 加载系统盘目录 </summary> public void LoadTvDirectory() { DriveInfo[] di = DriveInfo.GetDrives(); foreach (DriveInfo driver in di) { TreeNode tnode = new TreeNode(driver.Name); if (driver.IsReady) { tnode.Tag = driver; tnode.ToolTipText = driver.TotalSize.ToString(); this.treeView1.Nodes.Add(tnode); //为TreeView 控件添加节点 LoadDirectory(Path.GetFullPath(tnode.Text), tnode); } } } /// <summary> 加载指定目录中的项(文件夹)<para> <para> /// 参数1(path):目录路径名称<para> /// 参数2(tNode):选定的节点</para> /// </para></para> </summary> /// <param name="path">目录路径</param> /// <param name="tNode">选定的节点</param> public void LoadDirectory(string path, TreeNode tNode) { try { string[] directorys = Directory.GetDirectories(path); //获取选中treeview节点的子目录 foreach (string item in directorys) { if ((File.GetAttributes(item) & FileAttributes.Hidden) != FileAttributes.Hidden) { TreeNode tnode = new TreeNode(Path.GetFileName(item)); tnode.Name = item; tnode.ToolTipText = "文件夹: " + item; /* 未选定节点目录图标 索引 */ tnode.ImageIndex = 0; /* 选定节点目录显示图标 索引 */ tnode.SelectedImageIndex = 1; tNode.Nodes.Add(tnode); //选中节点添加子节点 } } if (path.Contains("System Volume Information")) { return; } string[] files = Directory.GetFiles(path); //获取目录中的文件名称 foreach (string item in files) { string eName = Path.GetExtension(item); if (eName == ".txt" && (File.GetAttributes(item) & FileAttributes.Hidden) != FileAttributes.Hidden) { TreeNode tnodes = new TreeNode(Path.GetFileNameWithoutExtension(item)); tnodes.Name = item; tnodes.ToolTipText = "文件名: " + item; /* 未选定文件显示图标 索引 */ tnodes.ImageIndex = 2; /* 选定文件显示图标 索引 */ tnodes.SelectedImageIndex = 3; tNode.Nodes.Add(tnodes); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
/* 窗体加载,TreeViews 为窗体名 */ private void TreeViews_Load(object sender, EventArgs e) { LoadTvDirectory(); //加载驱动盘符 }
/* 节点展开后发生事件 */ private void treeView1_AfterExpand(object sender, TreeViewEventArgs e) { foreach (TreeNode tnode in e.Node.Nodes) { tnode.Nodes.Clear(); /* 下面这句很重要,请注释看一下效果 */ if (!Path.HasExtension(tnode.Name)) LoadDirectory(tnode.Name, tnode); } }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { string FileName = e.Node.FullPath + ".txt"; if (File.Exists(FileName)) { RichTextBox.LoadFind(FileName, RichTextBoxStreamType.PlainText); } }
"加载文档内容"中的 - (下面这句是自定义委托事件-_-!)
RichTextBox1.LoadFind(FileName, RichTextBoxStreamType.PlainText);
改为
RichTextBox1.LoadFile(FileName, RichTextBoxStreamType.PlainText);
如果想用ListView显示文档的话
//加载指定目录下的文本文档 /// <summary> /// 加载指定目录下的文本文件 /// </summary> /// <param name="path">包含路径的文件名称</param> public void LoadLvFile(string path) { try { if (path.Contains("System Volume Information")) { return; } string[] files = Directory.GetFiles(path); this.listViews.Clear(); foreach (string item in files) { string eName = Path.GetExtension(item); if (eName == ".txt") //在listview里面显示文本文件 { this.listViews.Items.Add(item); } } this.listViews.View = View.SmallIcon; //设置listview的显示形式 } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }