TreeView控件使用
treeView1.SelectedNode = treeView1.Nodes[0]; //选中当前treeview控件的根节点为当前节点添加子节点:
TreeNode tmp;
tmp = new TreeNode("需要添加的内容");
treeView1.SelectedNode.Nodes.Add(tmp);
treeView1.SelectedNode = tmp;
为父节点添加子节点:
TreeNode tmp;
tmp = new TreeNode("需添加的内容");
treeView1.SelectedNode.Parent.Nodes.Add(tmp);
treeView1.SelectedNode = tmp;
设置当鼠标移开treeView控件时选中状态不消失
treeView1.HideSelection = false;
显示某一目录下的文件
private void PaintTreeView(TreeView treeView, string fullPath)
{
try
{
treeView.Nodes.Clear(); //清空TreeView
DirectoryInfo dirs = new DirectoryInfo(fullPath); //获得程序所在路径的目录
DirectoryInfo[] dir = dirs.GetDirectories(); //获取目录下文件夹选项
FileInfo[] file = dirs.GetFiles(); //获取目录下文件选项
int dircount = dir.Count(); //获取文件夹对象数量
int filecount = file.Count(); //获取文件对象数量
for (int i = 0; i < dircount; i++) //循环文件夹
{
treeView.Nodes.Add(dir[i].Name);
string pathNode = fullPath + "\\" + dir[i].Name;
GetMultiNode(treeView.Nodes[i], pathNode);
}
for (int j = 0; j < filecount; j++)
{
treeView.Nodes.Add(file[j].Name);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private bool GetMultiNode(TreeNode treeNode, string path)
{
if (Directory.Exists(path) == false)
{
return false;
}
DirectoryInfo dirs = new DirectoryInfo(path); //获得程序所在路径的目录对象
DirectoryInfo[] dir = dirs.GetDirectories(); //获得目录下文件夹对象
FileInfo[] file = dirs.GetFiles(); //获得目录下文件对象
int dircount = dir.Count(); //获取文件夹对象数量
int filecount = file.Count(); //获取文件对象数量
int sumcount = dircount + filecount;
if (sumcount == 0)
{
return false;
}
for (int j = 0; j < dircount; j++) //循环文件夹
{
treeNode.Nodes.Add(dir[j].Name);
string pathNodeB = path + "\\" + dir[j].Name;
GetMultiNode(treeNode.Nodes[j], pathNodeB);
}
for (int j = 0; j < filecount; j++) //循环文件
{
treeNode.Nodes.Add(file[j].Name);
}
return true;
}
判断不同层次的节点,显示不同的右键内容:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
TreeNode temp = treeView1.GetNodeAt(e.X, e.Y); //获取当前鼠标点击的位置
treeView1.LabelEdit = false; //设置当前不可编辑
if (temp != null)
{
treeView1.SelectedNode = temp;
temp.ToolTipText = "右键可编辑"; //鼠标放在节点位置,提示右键可编辑
if (temp.Level == 0)
{
treeView1.ContextMenuStrip = 模板分类管理;
//绑定不同的右键选项,ContextMenuStrip名字模板分类管理
}
else
treeView1.ContextMenuStrip = 模板管理;
}
else
{
treeView1.SelectedNode = null;
treeView1.ContextMenuStrip = null;
return;
}
}
TreeView控件使用的更多相关文章
- 基于Treeview控件遍历本地磁盘
一.前言 Treeview控件常用于遍历本地文件信息,通常与Datagridview与ImageList搭配.ImageList控件用于提供小图片给TreeView控件,DatagridView通常显 ...
- Win32中TreeView控件的使用方法,类似于资源管理器中文件树形显示方式
首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Wind ...
- asp TreeView控件的使用
相对于之前发过一个TreeView控件的使用方法 本次利用js操作,页面无刷新,性能提高 Css编码可能时我的模板页样式被继承下来,导致页面变乱,不需要的可以去掉 前台 <style> . ...
- C#TreeView控件遍历文件夹下所有子文件夹以及文件
一直对递归的理解不深刻,有时候觉得很简单,可是用起来总会出错.这里需要在TreeView控件里显示一个文件夹下的所有目录以及文件,毫无意外的需要用到递归. 一开始,想到用递归写一个生成每一个节点(Tr ...
- 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...
- 将treeview控件内容导出图片
项目中有一项需求,需要将项目中的treeview控件展示的树状结构直接导成一张图片.网上方法很多,但很多都是屏幕截屏,我的解决思路是新建一个用户控件,将主窗体的Treeview的数据传给用户控件(不要 ...
- 给C#的treeview控件的部分节点添加checkbox
一.先初始化treeview this.treeView1.CheckBoxes = true; this.treeView1.ShowLines = false; this.treeView1.Dr ...
- 部门树形结构,使用Treeview控件显示部门
部门树形结构.设计张部门表用于存储部门编码.名称.上级部门id,使用Treeview控件显示部门树,并实现部门增删改.移动.折叠等功能.特别提示,部门有层级关系,可用donetbar的adtree控件 ...
- C#Winform中treeView控件使用总结
1.如何展开结点时改变图标(注意:不是选中时) 要在目录中使用图标首先要加入一个控件ImageList(命名为imageList1),然后可以按图片的index或名称引用图片. 然后需要在TreeVi ...
随机推荐
- Struts 2的拦截器(Interceptor)总结
什么是Struts 2拦截器? 从软件构架上来说,拦截器是实现了面向方面编程的组件.它将影响了多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现功能的高度内聚,确保了业务对象 ...
- mac svn命令使用
对mac不熟悉 ssd硬盘又小 不想装版本管理软件. #创建目录 svn mkdir svn://ip.xxx.xxx.xxx/client/ios/opengl/imageToll -m " ...
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
有的Web项目选用Excel作为报表方案,在服务器端生成Excel文件,然后传送到客户端,由客户端进行打印.在国内的环境下,相对PDF方式,Excel的安装率应该比pdf阅读器的安装率要高,同时,微软 ...
- js 模版加载到前端
js 模版加载到前端 简单有效不高端 配个路由 /js/:filename , 用 readTemplate 响应请求,前端可以按模块方式直接 require 模板 'use strict' var ...
- 让代码重构渐行渐远系列(3)——string.Equals取代直接比较与非比较
重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提 ...
- Replication的犄角旮旯(三)--聊聊@bitmap
<Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...
- Sequence Project Showplan Operator 序列映射运算符
Sequence Project Showplan Operator 序列映射运算符 序列映射运算符会从一个已经排序的集合里通过不停添加集合里的列执行计算. 运算符根据一个或多个列的值把输入集合分为多 ...
- ABP理论学习之设置管理
返回总目录 本篇目录 介绍 定义设置 获取设置值 更改设置 关于缓存 介绍 每个应用程序都需要存储一些设置信息,然后在应用程序中的某个地方使用这些设置.ABP提供了健壮的基础设施来存储或检索服务端和客 ...
- [转] Agile Software Development 敏捷软件开发
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...
- shell日常案例(一)
序 在linux平台下开发,我们经常会接触到一些任务性质的工作,而处理方式多样化.现积累各个案例. 清理近7天的数据 日志文件越来越大,我们需要及时的去做清理工作.配合工具:find, ...