C# treeView展示目录树

article/2025/7/30 6:05:12

使用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 < dirCount; i++){rootNode.Nodes.Add(dir[i].Name);//在根节点下添加子节点(dir[i].Name目录名称)string pathNode = path + "\\" + dir[i].Name;//子节点的全路径GetNode(rootNode.Nodes[i], pathNode);//遍历目录下的子目录}}catch (Exception ex){MessageBox.Show(ex.Message + "\r\n出错位置");}}//递归遍历子目录private bool GetNode(TreeNode treeNode, string path){if (Directory.Exists(path) == false){return false;}DirectoryInfo dirs = new DirectoryInfo(path);DirectoryInfo[] dir = dirs.GetDirectories();int dirCount = dir.Count();if (dirCount == 0){return false;}for (int i = 0; i < dirCount; i++){treeNode.Nodes.Add(dir[i].Name);string pathNode = path + "\\" + dir[i].Name;GetNode(treeNode.Nodes[i], pathNode);//递归遍历目录下的子目录}return true;}/// <summary>///选中节点,其子节点也选中 /// </summary>/// <param name="currNode">当前选择的节点</param>/// <param name="state">选择状态</param>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);}}}/// <summary>/// 取消节点选中,其父节点也取消选择/// </summary>/// <param name="treeNode">当前节点</param>/// <param name="state">选择状态</param>private void FuNodeNoChecked(TreeNode currNode, bool state){TreeNode fuNode = currNode.Parent;fuNode.Checked = state;if (currNode.Parent.Parent != null){FuNodeNoChecked(currNode.Parent, state);}}}
}

 


http://chatgpt.dhexx.cn/article/s9CQ0R8T.shtml

相关文章

vue 滚动目录树

要做这样一个目录树&#xff0c;先确定一下它的功能 1、点击目录按钮的时候&#xff0c;蓝点滑到点击的位置 2、页面滚动到点击按钮所对应的位置 3、页面滚动时&#xff0c;目录树的蓝点随着滚动条滚动 第一个功能&#xff0c;用css来写 就可以完成 index部分 <div clas…

目录树生成

1.使用命令行生成目录树 打开所要生成目录树的路径&#xff0c;如“F:\电影”&#xff0c;输入cmd -> 回车&#xff0c; 弹出命令行工具&#xff0c;输入tree /f命令&#xff0c;回车&#xff0c;则会生成一个目录树结构。 2.使用目录树生成工具生成目录树 目录树生成工具…

文件夹自动生成目录树(批处理)

举例&#xff1a;将FreeRTOS文件夹下所有文件生成目录树结构 1.在FreeRTOS同级文件夹下&#xff0c;新建文本文件&#xff0c;命名为 《目录树生成器.txt》&#xff08;名字可自定义&#xff09; 2.在 《目录树生成器.txt》 中输入如下命令&#xff0c;同时将生成的目录文件命名…

关于目录树

目录树 所谓目录树&#xff0c;大概就是指这个样子&#xff1a; 其实这只是一种显示方式&#xff0c;要依赖于其他主体&#xff0c;并不是内容本身。 作为显示方式 Word中的目录树 word中&#xff0c;如果设置了各级标题&#xff0c;就可以通过大纲视图显示目录树&#…

目录树设计

目录树的内容&#xff0c;将使用 dtree 来构建。使用 dtree 后&#xff0c;设计的重点就不是树&#xff0c;而是树中节点的设计。节点设计的核心是节点 id 的设计&#xff0c;既要保证节点 id 的唯一性&#xff0c;还要 id 有明确的含义&#xff0c;并且永不重复。 事实上&…

通过命令方式查看目录树

文章目录 一、Windows上查看目录树&#xff08;一&#xff09;查看当前目录的目录树&#xff08;二&#xff09;查看指定目录的目录树&#xff08;三&#xff09;保存目录树到文本文件 二、CentOS上查看目录树&#xff08;一&#xff09;安装tree程序&#xff08;二&#xff09…

java实现多层级目录树详解

一&#xff0c;引言 在开发中&#xff0c;经常遇到前端需要实现一个多层级的目录树&#xff0c;那么后端就需要根据这种结构返回对应的数据&#xff0c;因此在这里记录一下本人在开发中是如何实现这个多层级的目录树。 二&#xff0c;建表建库 在建表时&#xff0c;需要注意…

Linux系统目录树结构以及解释

FHS标准 Filesystem Hierarchy Standard&#xff08;文件系统层次化标准&#xff09;的缩写&#xff0c;多数Linux版本采用这种文件组织形式&#xff0c;类似于Windows操作系统中c盘的文件目录&#xff0c;FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最…

目录树的构造

概述 ”树“在计算机的世界里是一个基本的数据结构&#xff0c;很多地方都能看到”树“的身影。最常见的应该是在各种软件和网页的菜单栏中&#xff0c;多层级的折叠其实就是以一棵树的形式进行展现的&#xff0c;如下图所示&#xff1a; 在树的层级和标签类别比较少&#xf…

兴安雪学运维之:目录树详解

极北之地&#xff0c;兴安之雪&#xff0c;老骥伏枥转战Linux运维&#xff0c;最近根据授课和大略看了FHS3.0&#xff0c;对Linux的目录有了初步的了解&#xff0c;怕人老忘性差&#xff0c;作以记录。 一、目录结构图 Linux的目录是一个倒置的树状结构&#xff0c;最顶层的目录…

【数据结构】B/B-树(目录树)

引言 关于B树的性质 一、B树的结构 二、B树的实现 #include<iostream> using namespace std; #if 1 //5分支Btree #define M 5 //奇数 #define MAXSIZE (M-1) //最多元素个数 #define MINSIZE (M/2) //最少元素个数 //B树 class Btree { public://关键码类型using KeyTy…

【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;

一、问题 Mybatis将String类型的0存到数据库中的number类型字段中&#xff0c;变成了空&#xff1b; 二、分析 自己写了一个自动写代码的脚本&#xff0c;带入springBatch后&#xff0c;读取文件时&#xff0c;少了序列号0-9的记录&#xff08;10笔一提交&#xff09;&#…

java取数据库number转String

2019独角兽企业重金招聘Python工程师标准>>> BigDecimal bigDecimal(BigDecimal)value; Long lbigDecimal.longValue(); String sbigDecimal.toString(); 转载于:https://my.oschina.net/u/2285090/blog/514110

字符串存入数据库date类型字段

有时候为了计算方便等原因需要将时间以date格式存入数据库&#xff0c;但是前台传过来的数据类型都是字符串&#xff0c;如果将字符串直接插入date类型的字段中会抛&#xff1a;ORA-01861: 文字与格式字符串不匹配。 前台页面有一个表单&#xff0c;如下所示&#xff1a; <…

2018年SCI论文--整合GEO数据挖掘完整复现 八 :STRING数据库构建蛋白质相互作用网络(PPI),cytoscape软件筛选hub基因

文章目录 论文地址STRING数据库PPI网络构建输入差异基因listPPI图保存结果 cytoscape软件筛选hub基因、功能模块输入“string_interactions”文件用cytohHubba插件&#xff0c;筛选top10 Hub基因生存分析用MCODE插件&#xff0c;筛选功能模块 论文地址 STRING数据库 PPI网络构…

string数据库使用和实践第三部分数据处理 流程-参数--后续分析

流程 1.首先要获取蛋白质列表&#xff08;单个/多个&#xff09; 格式&#xff1a;蛋白名称为一个占一行&#xff0c;或者氨基酸序列的通用格式。ID类别&#xff1a;可以为一种&#xff0c;可以为多种混合 2.在对应的数据框中输入蛋白质列表或者上传列表文件后&#xff0c;选择…

spring boot String类型json 存入数据库

效果图&#xff1a; 如图&#xff0c;string类型的json字符串&#xff0c;存入数据库&#xff0c;主要就是解析成map&#xff0c;遍历插入&#xff0c;不多说上干货&#xff1a; PostMapping(value "/currentConfig")public String saveSvConfig(RequestParam(&quo…

jpa @Convert list转String存入数据库

1.问题 list通过jpa直接存入数据库会报错这里需要进行转换 2.代码 1.dto对象 Entity Data Accessors(chain true) public class GameMatch {/*** 主键*/IdGeneratedValue(strategy GenerationType.IDENTITY)private Integer id;/*** 游戏id*/private Integer gameId;/*** …

string数据库使用和实践的第二部分网页展示http://string-db.org/

主页 protein-mode 该模式中&#xff0c;string数据库能够预测到特定物种中的某一个蛋白质的相互作用关系 通过该模式可以获取最多的特异性&#xff0c;但是覆盖面就会较小一些&#xff0c;原因是该模式中&#xff0c;string不会准确的去获取其他物种的直系同源物&#xff0c;取…

蛋白相互作用数据库,STRING使用指南

对于基因组数据分析而言的话&#xff0c;我们能用到网络分析的就是蛋白相互作用分析(protein-protein ineraction, PPI)分析了。 蛋白相互作用分析的数据库有很多&#xff0c;至于为什么选择STRING&#xff0c;还是在于其强大的可视化&#xff0c;以及自定义功能。这样我们可以…