TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,我们可以展开和折叠、显示或隐藏其中的节点。TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。

下面是一些常用的方法和属性:

添加节点

TreeNode tn1 = new TreeNode(textBox1.Text.Trim());
tn1.Name = textBox1.Text.Trim();
treeView1.SelectedNode.Nodes.Add(tn1);

编辑选中节点

只有当 TreeView 的 LabelEdit 属性设置为 true,此方法才生效。 如果 LabelEdit 设置为 false,将引发异常,并且树节点不会进入可编辑状态。与之对应的是EndEdit()方法来关闭编辑节点。

treeView1.LabelEdit = true;
treeView1.SelectedNode.BeginEdit();

删除选中节点

treeView1.Nodes.Remove(treeView1.SelectedNode);

展开选中节点

treeView1.SelectedNode.ExpandAll();

折叠选中节点

方法传递的布尔参数为 true 则使子节点保持当前状态;为 false 则折叠子节点。

treeView1.SelectedNode.Collapse(false);

选中节点折叠展开状态切换

treeView1.SelectedNode.Toggle();

显示复选框

与之相关联的是Checked属性获取或设置一个值,用以指示树节点是否处于选中状态。

treeView1.CheckBoxes = true;

选中节点路径

treeView1.SelectedNode.FullPath

选中节点树深度

treeView1.SelectedNode.Level;

树节点数目

treeView1.GetNodeCount(true);

详细使用可以参考MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.treenode(v=vs.100).aspx

实例1.TreeView控件显示本地磁盘、文件夹

遍历磁盘代码:

        //来源:http://zxlovenet.cnblogs.com
private void ForeachDisk()
{
DriveInfo[] dr = DriveInfo.GetDrives();
string driveName = "";
foreach (DriveInfo d in dr)
{
switch (d.DriveType)
{
case DriveType.Fixed:
driveName = "本地磁盘(" + d.Name.Substring(0, 2) + ")";
break;
case DriveType.Removable:
driveName = "可移动磁盘(" + d.Name.Substring(0, 2) + ")";
break;
case DriveType.CDRom:
driveName = "DVD驱动器(" + d.Name.Substring(0, 2) + ")";
break;
case DriveType.Network:
driveName = "网络驱动器(" + d.Name.Substring(0, 2) + ")";
break;
default:
driveName = "未知(" + d.Name + ")";
break;
}
this.treeView1.Nodes.Add(d.Name, driveName);
}
}

显示文件夹内容:

        //来源:http://zxlovenet.cnblogs.com
private void ReadDir(TreeNodeMouseClickEventArgs e)
{
if (e.Node.Nodes.Count > 0)
{
if (e.Node.IsExpanded)
{
e.Node.Collapse(); }
else
{
e.Node.Expand();
}
}
else
{
if (Directory.Exists(e.Node.Name))
{
try
{
string[] allDirectory = Directory.GetDirectories(e.Node.Name);
foreach (string s in allDirectory)
{
e.Node.Nodes.Add(s, s.Remove(0, s.LastIndexOf("//") + 1));
}
listBox1.Items.Clear();
string[] allFiles = Directory.GetFiles(e.Node.Name);
foreach (string sf in allFiles)
{
listBox1.Items.Add(sf.Remove(0, sf.LastIndexOf("//") + 1));
}
}
catch
{
}
}
e.Node.Expand();
}
}

实例2.TreeView实现拖拽操作

        

后台代码:

        //来源:http://zxlovenet.cnblogs.com
private Point Position = new Point(0, 0); private void Form1_Load(object sender, EventArgs e)
{
this.treeView1.AllowDrop = true;
this.treeView1.ExpandAll();
} private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
} private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(TreeNode)))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
} private void treeView1_DragDrop(object sender, DragEventArgs e)
{
TreeNode myNode = null;
if (e.Data.GetDataPresent(typeof(TreeNode)))
{
myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
}
else
{
MessageBox.Show("error");
}
Position.X = e.X;
Position.Y = e.Y;
Position = treeView1.PointToClient(Position);
TreeNode DropNode = this.treeView1.GetNodeAt(Position);
// 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身
if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode)
{
TreeNode DragNode = myNode;
// 将被拖拽节点从原来位置删除。
myNode.Remove();
// 在目标节点下增加被拖拽节点
DropNode.Nodes.Add(DragNode);
}
// 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
if (DropNode == null)
{
TreeNode DragNode = myNode;
myNode.Remove();
treeView1.Nodes.Add(DragNode);
}
}

下载:DEMO

PS:又是好几天没有更新了,这周是比较忙的,周六一整天的比赛,晚上坚持更新。

Winform控件学习笔记【第六天】——TreeView的更多相关文章

  1. Winform控件学习笔记【第二天】——常用控件

    背景:期末考试刚过就感冒了,嗓子火辣辣的,好难受.但是一想起要学习总结就打起精神来了,Winform控件网上也没有多少使用教程,大部分都是自己在网上零零散散的学的,大部分用的熟了,不总结会很容易忘得. ...

  2. Winform控件学习笔记【第四天】——WebBrowser

    常用方法 Navigate(string urlString);//浏览urlString表示的网址 Navigate(System.Uri url);//浏览url表示的网址 Navigate(st ...

  3. WinForm控件学习笔记【第一天】——Control类

    感悟:明天就又是学校双选会的日子了.两年我都参与了学校的双选会的服务工作,现在该是双选会服务的我时候了.怎么样找到一份好的工作,或者说怎么样学习才能符合企业对人才的要求,我现在也是很迷茫.平时都是在看 ...

  4. Winform控件学习笔记【第五天】——ListView

    [第五天] 常用的基本属性: FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. GridLines:设置行和列之间是否显示网格线.( ...

  5. Winform控件学习笔记【第三天】——ListBox

    1. 属性事件列表: SelectionMode    组件中条目的选择类型,即多选(Multiple).单选(Single) Rows             列表框中显示总共多少行 Selecte ...

  6. 转)delphi chrome cef3 控件学习笔记 (二)

    (转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...

  7. Winform控件学习-TreeView - ContextMenuStrip

    首先,要向窗体添加一个TreeView控件: 然后再添加一个ContextMenuStrip控件: 接下就要给TreeView添加一个MouseDown事件,代码如下: Example 1 priva ...

  8. Winform控件学习-TreeView

    转自 http://www.cnblogs.com/zxlovenet/p/3589425.html      作者: 初行 TreeView控件用来显示信息的分级视图,如同Windows里的资源管理 ...

  9. C# WinForm调用UnityWebPlayer Control控件 <学习笔记1>

    工具 1.三维场景 Unity 5.0.2f1 2.开发环境Microsoft Visual Studio 2010 3.需要使用的控件 UnityWebPlayer Control 出现的问题及解决 ...

随机推荐

  1. lua脚本之lua语言简介以及lua的安装

    本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解.  一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...

  2. 三角形(css3)

    .userCard .sanjiao {//三角形的制作: width: 0; height: 0; border-left: 10px solid transparent; border-right ...

  3. Mybatis的mapper注册

    既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了.但是首先我们需要告诉 MyBatis 到哪里去找到这些语句. Java 在自动查找这方面没有提供一个很好的方法 ...

  4. C#学习笔记(24)——C#将PPT批量转为JPG(最简单的方法)

    说明(2017-8-1 11:15:46): 1. 哈哈,我就说微软肯定有自己的办法,把PPT转成图片. 2. 主要是要引入两个微软自己的程序集,vs里自带直接添加引用,注意一下版本,12.0是off ...

  5. iOS 检测网络状态 自动判断 认为提示网络改变

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无能)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验WIFI\3G ...

  6. 使用jQuery延迟加载js文件

    //异步加载js文件并调用函数 function delayCall(calledFunction, funcParams, jsUrl) { if (eval('typeof '+calledFun ...

  7. java二维码的生成与解析代码

    二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大写字母或2710个数字或 ...

  8. C语言 · 字符串变换

    算法训练 字符串变换   时间限制:1.0s   内存限制:256.0MB      问题描述 相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了.今天,徐老师想测试一下大家对于字符 ...

  9. WebStorm 7.0 支持更多的Web技术

    JetBrains刚刚发布了WebStorm 7.0 GA,支持EJS.Mustache.Handlebars.Web组件.Stylus.Karma.Istanbul.Compass,并增强了很多功能 ...

  10. C# .net微信开发,开发认证,关注触发消息,自动应答,事件响应,自定义菜单

    成为开发者 string[] ArrTmp = { "token", Request["timestamp"], Request["nonce&quo ...