使用winform来递归实现资源管理器

这里主要是对TreeView控件的学习

所使用到的方法:
string path=@"E:\歌词";

//获得指定文件夹下所有文件夹的名称,这是带路径的,如:E:\歌词\1111111

Directory.GetDirectories(path);

 

//获得指定路径下的文件的文件名,不带路径与后缀名 ,如:01 Welcome To New York

Path.GetFileNameWithoutExtension(FilePath[i])


//这是TreeNode节点的集合类
TreeNodeCollection


//TreeNode 节点可以New,可以设置text,与Tag属性

TreeNode tn = new TreeNode();
tn.Text = filename;
tn.Tag = Newfilepath[i];


//TreeView控件 有SelectedNode 获取选中的节点,与事件 tv_AfterSelect,选中节点发生改变之后所触发

string path = tv.SelectedNode.Tag.ToString();

代码:

//方法需传入绝对路径,以及Treeview的Name的Nodes属性
private void GetNodeValue(string path, TreeNodeCollection tc){//加载选定文件夹下的文件的名字string[] FilePath = Directory.GetDirectories(path);//获得文件的名字string filename = string.Empty;//获得文件夹的名字for (int i = 0; i < FilePath.Length; i++){filename = Path.GetFileNameWithoutExtension(FilePath[i]);TreeNode tn = new TreeNode();tn.Text = filename;//在treeview节点下存下每个节点的路径
                tc.Add(tn);//这里遇到了递归,遇到文件夹,先进入文件夹里面去遍历,将大的tr,替换为小的tr
                GetNodeValue(FilePath[i],tn.Nodes);}//因为目录名不能被点击,获得目录下的文件//获得文件夹下文件的名字,string[] Newfilepath = Directory.GetFiles(path);for (int i = 0; i < Newfilepath.Length; i++){filename = Path.GetFileNameWithoutExtension(Newfilepath[i]);TreeNode tn = new TreeNode();tn.Text = filename;//在treeview节点下存下每个节点的路径tn.Tag = Newfilepath[i];tc.Add(tn);}}//然后是点击事件,发生之后,将读取路径下的值,放进textbox中private void tv_AfterSelect(object sender, TreeViewEventArgs e){try{string path = tv.SelectedNode.Tag.ToString();txtBox.Text = File.ReadAllText(path, Encoding.UTF8);}catch { }}

 

扩展:

1、TreeView控件和TreeNode的常用成员

AfterSelect //单击事件

TreeView.HideSelection = False;  //可让选中节点保持高亮

Node = TreeView.SelectedNode; //已选中的当前树节点

string I = treeView1.SelectedNode.Index.ToString()

   //当前节点的索引值,由0开始,只限于同父、同级的节点集合

treeView1.SelectedNode.Text = “String”; //设置当前节点的文本

  string String = treeView1.SelectedNode.Text; //获取当前节点的文本

treeView1.SelectedNode.FullPath.ToString();

  //当前节点的全路径,从根节点开始到当前节点,由节点的Text属性加“\”连接而成的字符串,最后的节点后面没有“\”

treeView1.SelectedNode.Tag;

  //当前节点的其他信息,可以是各种类型,也可以是对象

treeView1.SelectedNode.Name:树节点的名称,也是(TreeNodes集合)TreeNodeCollection 中该节点的键(key)

treeView1.SelectedNode.Parent; //当前树节点的父树节点。

treeView1.SelectedNode.Level; //树视图的深度(从零开始)

2、在treeView控件中,成员Nodes其实就是一个TreeNode的集合,所以也可以使用TreeNodeCollection的成员:

 

TreeNodeCollection 类,TreeNodes集合类

treeView1.Nodes.Add(字符串);

  //以字符串为显示文本添加节点到树集合的末尾

treeView1.Nodes.Add(TreeNode);

  //将现有的树节点添加到树节点集合的末尾。

treeView1.Nodes.Add(String, String):创建具有指定键和文本的新树节点,并将其添加到集合中。

treeView1.Nodes.Find(string key,bool searchAllChildren):查找具有指定键的树节点,可以选择搜索子节点,返回一个list[]。

转载于:https://www.cnblogs.com/Raymond201508/p/4769653.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos配置单网卡双IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 DEVICEeth0:1BOOTPROTOstaticIPADDRIP地址NETMASK掩码ONBOOTyesservice network restart转载于:https://blog.51cto.com/gdzy1987/591124

Linux Qt打包发布应用程序

1、新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe"SensorMaster" #你需要发布的程序名称 des"/home/jianwang16/SensorMaster_Proj/build-SensorMaster-Desktop_Qt_5_9_0_GCC_64bit-Release/SensorMaster_Pack/install-pack " #创建文…

拟合优度检验

可决系数 可决系数&#xff08;coefficient of determination&#xff09; 如果样本回归线对样本观测值拟合程度越好&#xff0c;各样本观测点与回归线靠得越近&#xff0c;由样本回归做出解释的离差平方和与总离差平方和越相近&#xff1b;反之&#xff0c;拟合程度越差&…

Linux Qt打包应用程序--利用linuxdeployqt

1、下载安装linuxdeployqt (1) github 地址&#xff1a;https://github.com/probonopd/linuxdeployqt/releases 下载 linuxdeployqt-6-x86_64.AppImage 名称太长&#xff0c;可修改为linuxdeployqt (2)复制到/usr/local/bin 文件夹下&#xff0c;并增加可执行权限 sudo chmo…

移动端 项目开发经验集锦

移动端 项目开发经验集锦 本次要与大家分享的是&#xff0c;在项目开发过程中&#xff0c;移动端遇到的各种问题~本文主要与大家分享移动端开发经验&#xff0c;主要包括表单兼容&#xff08;fixed定位的input存在的问题、iPhone、iPad的按钮默认样式、默认高光样式的处理、关闭…

[react] 怎么定时更新一个组件?

[react] 怎么定时更新一个组件&#xff1f; class Clock extends React.Component{constructor(props){super(props);this.state{date:new Date()};}componentDidMount(){this.timerIDsetInterval(()>this.tick(),1000);}componentWillUnmount(){clearInterval(this.timerI…

Linux中find用法

Linux中find常见用法示例 find path -option [ -print ] [ -exec -ok command ] {} \; #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格 #-ok 和-exec相同&#xff0c;只不过在操作前…

Fedora 17 下 Samba 服务快速设置

From : http://blog.sina.com.cn/s/blog_90cb4c630101724d.html ###############################Samba 服务器搭建及配置 - Jerrydq73更新日期: 2012.7.14###############################0. 参考&#xff1a;Fedora 及 CentOS 下 Samba 服务器的快速搭建1. 安装# yum instal…

Qt 设置窗体或控件渐变消失

1、主窗体渐变 QPropertyAnimation *animation new QPropertyAnimation(this,"windowOpacity");animation->setDuration(500);animation->setStartValue(1);animation->setEndValue(0);animation->setEasingCurve(QEasingCurve::Linear);animation->s…

[react] 在React中怎么使用async/await?

[react] 在React中怎么使用async/await&#xff1f; 如果是脚手架创建的react项目即可直接使用&#xff0c;否则需要配置babel 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关…

wcf小实例

/host using System; using System.ServiceModel; using System.Text;///host namespace Host {public class Host :IHost{#region IHost 成员public string Hello(){return string.Format("Hello Access Date:{0}", DateTime.Now);}#endregion}[ServiceContract]pu…

zoj3777(状态压缩)

题目阐述&#xff1a; 给定n个座位&#xff0c;n个人&#xff0c;每个人可以做n个位置中的任意一个&#xff0c;P[i][j]代表第i个人做第j个位置获得的分数&#xff0c;求有多少种排列方式使得获得的分数大于等于M。 这道题跟数位dp的思想很像&#xff0c;都是穷举可能的方式&am…

[react] 你最不喜欢React的哪一个特性(说一个就好)?

[react] 你最不喜欢React的哪一个特性&#xff08;说一个就好&#xff09;&#xff1f; 受控组件&#xff08;input、radio、textarea&#xff09;写起来始终难受&#xff0c;没有像vue的v-model之类的语法糖 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放…

Fedora 15 快捷操作之新体验

From: http://www.linuxdiyf.com/bbs/viewthread.php?tid202449&extra 由于Fedora采用了默认的Gnome3&#xff0c;所以桌面环境与以往的版本有很大的不同&#xff0c;比如说右上角没有关机选项卡&#xff0c;需要你按下Alt键就会发现&#xff0c;挂起变成了关机&#xff…

Qt MQTT安装步骤记录

QT中的MQTT作为第三方库需要自己安装才能使用&#xff0c;以下简单记录方法。 一、下载MQTT源码编译成连接库 github地址&#xff1a; https://github.com/qt/qtmqtt 二、新建QtMqtt文件夹并拷贝MQTT头文件 2.1 在mingw53_32\include中新建QtMqtt文件夹 2.2 拷贝源码中的所有…

巧分十九头牛

从前&#xff0c;有一位姓李的农夫&#xff0c;他有三个儿子&#xff0c;大儿子和二儿子都结了婚&#xff0c;自立了门户。小儿子是跟他生活在一起的&#xff0c;至今没有还没有说亲。      李老头的老伴于三年前离开了人世。他做梦没想到老伴请他去做伴&#xff0c;觉得自…

算法学习之选择排序

选择排序&#xff0c;就是选择最小的&#xff0c;然后置换&#xff0c;循环再找到最小的&#xff0c;再置换... 1 package com.swust.插入排序;2 3 import java.util.Random;4 5 public class Example1 {6 public static void main(String[] args) {7 int[] arrnew…

Qt 解决 #error This file requires compiler and library support for the ISO C++ 2011 standard

一、Qt编译过程中&#xff0c;出现以下问题#error This file requires compiler and library support for the ISO C 2011 standard. This support is currently experimental, and must be enabled with the -stdc11 or -stdgnu11 compiler options.意思是缺乏c11的支持。二、…

Adobe FLASH CS3快捷键(时间轴常用)

From: http://blog.sina.com.cn/s/blog_4b5506750100ci3y.html 下面发几个时间轴常用快捷键&#xff0c; 记住了在做的当中能提升很多速度。 【时间轴】 &#xff08;M) 【删除帧】 &#xff08;R) ShiftF5 【剪切帧】 &#xff08;T) CtrlAltX 【复制…

zabbix的rc控制脚本

zabbix在freebsd的rc启动控制脚本&#xff0c; 拷贝如下内容到/usr/local/etc/zabbix_ctl&#xff0c;并且修改权限为可执行&#xff1a; #!/bin/sh umask 022 CAT/bin/cat KILL/bin/kill SU_USERzabbix # zabbix script ZABBIX_SERVER/usr/local/sbin/zabbix_server …