作者: | 来源:互联网 | 2023-09-14 05:40
使用treeView控件展示目录树列表,并进行一系列的操作。
代码:
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 TreeViewTest
{public partial class frmTreeView : Form{private bool isfirst = true;//默认选择某个节点标志public frmTreeView(){InitializeComponent();}private void btnOpdir_Click(object sender, EventArgs e){FolderBrowserDialog dlg = new FolderBrowserDialog();//选择目录if (dlg.ShowDialog()==DialogResult.OK){ShowTreeView(treeView1,dlg.SelectedPath);}}//treeView1事件---取消默认选择某一节点private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e){if (isfirst){e.Cancel = true;isfirst = false;}}//treeView1事件---选中或取消选中树节点上的复选框private void treeView1_AfterCheck(object sender, TreeViewEventArgs e){if (e.Action == TreeViewAction.ByMouse)//通过鼠标操作{if (e.Node.Checked == true){AllNodesChecked(e.Node, true);//选中节点,其子节点也选中}else if (e.Node.Checked == false){AllNodesChecked(e.Node, false);//取消节点选中,其子节点也取消选择if (e.Node.Parent != null) //如果节点存在父节点,取消父节点的选择{FuNodeNoChecked(e.Node, false);//取消子节点选中,其父节点也取消选择}}}}//展示目录树结构private void ShowTreeView(TreeView treeview, string path){try{treeview.Nodes.Clear();//清空所有TreeNode rootNode = new TreeNode(path);//载入显示rootNode.Tag = path;//树节点数据rootNode.Text = path;//节点标签显示内容treeview.Nodes.Add(rootNode);//添加根目录DirectoryInfo dirs = new DirectoryInfo(path);//创建目录对象DirectoryInfo[] dir = dirs.GetDirectories();//目录下的所有子目录int dirCount = dir.Count();//子目录个数for (int i = 0; i ///选中节点,其子节点也选中 /// /// 当前选择的节点///
选择状态private void AllNodesChecked(TreeNode currNode, bool state){TreeNodeCollection nodes = currNode.Nodes;if (nodes.Count > 0){foreach (TreeNode tn in nodes){tn.Checked = state;AllNodesChecked(tn, state);}}}/// /// 取消节点选中,其父节点也取消选择/// ///
当前节点///
选择状态private void FuNodeNoChecked(TreeNode currNode, bool state){TreeNode fuNode = currNode.Parent;fuNode.Checked = state;if (currNode.Parent.Parent != null){FuNodeNoChecked(currNode.Parent, state);}}}
}