递归生成treeview树形节点(没有用递归函数之后会有补充,这里只用系统的内置方法去生成)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace C11_资源管理器
{
public partial class Form1 : Form
{
string path = @"d:\广州传智";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//得到根目录下的所有的子目录的路径
string[] dirs = Directory.GetDirectories(path);
//TreeView下的根节点在TreeView对象的Nodes集合中.
foreach (string dir in dirs)
{
//每1个节点的类型是1个TreeNode类型
//TreeNode对象的Text属性就是 节点上面显示的文本.
TreeNode node = new TreeNode();
//将全路径保存在node对象的tag属性中.
node.Tag = dir;
node.Text = Path.GetFileName(dir);
tvMain.Nodes.Add(node);
//tvMain.Nodes.Add(Path.GetFileName(dir));
}
}
/// <summary>
/// 在选中1个节点之后
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tvMain_AfterSelect(object sender, TreeViewEventArgs e)
{
//0. 清空ListView中的所有的项目
lvData.Items.Clear();
//1. 得到选中的节点
string path = tvMain.SelectedNode.Tag.ToString();
//2.得到选中的节点所代表的文件夹的路径
//3. 将这个路径下的所有的文件的信息读出.
//将路径下面的所有的文件的信息返回.
string[] files = Directory.GetFiles(path);
ListViewItem item = null;
//遍历files数组 将每1个元素封装为1个ListViewItem对象 并添加到ListView中
FileInfo info = null;
foreach (string file in files)
{
info = new FileInfo(file);
item = new ListViewItem();
item.Text = Path.GetFileName(file);
item.Tag = file;
item.SubItems.Add(info.Length.ToString());
item.SubItems.Add(info.CreationTime.ToString());
lvData.Items.Add(item);
}
//加载当前目录下的子文件夹为当前节点的子节点.
string[] dirs = Directory.GetDirectories(path);
foreach (string str in dirs)
{
TreeNode node = new TreeNode();
node.Text = Path.GetFileName(str);
node.Tag = str;
tvMain.SelectedNode.Nodes.Add(node);
}
}
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
//1. 得到我们选中的那1项吧
string path = lvData.SelectedItems[0].Tag.ToString();
//2. 得到选中的那1项的文件的全路径
if (MessageBox.Show("你真的要删除吗?删除以后就找不到了哦!", "信息提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)== System.Windows.Forms.DialogResult.Yes)
{
// //3.删除文件.
File.Delete(path);
lvData.SelectedItems[0].Remove();
}
}
}
}
递归生成treeview树形节点(没有用递归函数之后会有补充,这里只用系统的内置方法去生成)的更多相关文章
- Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法
知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...
- python递归和内置方法
递归:函数调用自身 核心:递进的时候能够达到一个结果,问题规模越来越小(不一定要真正的达到):设置一个条件,能够让最后一次函数调用结束 练习: 第一个人的姓名是16岁,后面每个人的年龄都比前一个大 ...
- 递归,装饰器,python常用内置方法
**递归** def calc(n): print(n) if int(n / 2) == 0: 条件判断 r ...
- C# winform 递归选中TreeView子节点
/// <summary> /// 递归选中所有的自节点 /// </summary> /// <param name="nodeThis">T ...
- swift 4 生成随机数的内置方法汇总
第一种是drand48(),不接收参数, 返回的类型是Double. 就返回 0到1之间的Double类型的随机数.举个例子: //每次点击button,button 的颜色会随机变换. class ...
- 简学Python第三章__函数式编程、递归、内置函数
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)
一.三元运算符 就是if.....else..... 语法糖 前提:if和else只有一条语句 #原始版 cmd=input('cmd') if cmd.isdigit(): print('1') e ...
- Python基础3 函数、递归、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
- python学习笔记:第14天 内置函数补充和递归
一.匿名函数 匿名函数主要是为了解决一些简单需求而设计的一种函数,匿名函数的语法为: lambda 形参: 返回值 先来看一个例子: # 计算n的n次方 In[2]: lst = lambda n: ...
随机推荐
- 什么是 web 开发
什么是 web 开发 这几天因为工作需要,了解了一下Web development 的技术路线,来源自 en.wikipedia.org/wiki/Web_development ...
- 查看shell环境下,网络是否连通-curl/ping
检查网络是否可用 curl www.baidu.com <!--STATUS OK--><html>...</html> ping www.baidu.com注意: ...
- rsyslog编译依赖问题解决
bit-32-centos6.4测试loganalyzer+mysql+rsyslog web界面中央日志分析系统.1,报json-c错误wget http://cloud.github.com/ ...
- 不常用的容易忘记常见mysql操作数据表命令
删除外键关联的约束 alter table tablename drop foreign key keyname;
- MOCK 基本使用例子
package com.icil.esolution.orders; import static org.springframework.test.web.servlet.request.MockMv ...
- shiro 没有权限异常处理
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> ...
- Hystrix-超时设置
由于客户端请求服务端方法时,服务端方法响应超过1秒将会触发降级,所以我们可以配置Hystrix默认的超时配置 如果我们没有配置默认的超时时间,Hystrix将取default_executionTim ...
- Haskell语言学习笔记(50)Extra
Extra 安装 extra 模块. $ cabal install extra Installed extra-1.6 Prelude> :m +Extra Prelude Extra> ...
- 迷你MVVM框架 avalonjs 1.3.7发布
又到每个月的15号了,现在avalon已经固定在每个月的15号发布新版本.这次发布又带来许多新特性,让大家写码更加轻松,借助于"操作数据即操作DOM"的核心理念与双向绑定机制,现在 ...
- 使用robotium对android应用进行自动化测试
所需要的环境: 1.eclipse 2.android development tools(ADT) 3.software develoment kit(SDK) 4.JDK 5.robotium 1 ...