转自 http://www.cnblogs.com/zxlovenet/p/3589425.html      作者: 初行

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();

选中节点路径

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(, ) + ")";
break; case DriveType.Removable:
driveName = "可移动磁盘(" + d.Name.Substring(, ) + ")";
break; case DriveType.CDRom:
driveName = "DVD驱动器(" + d.Name.Substring(, ) + ")";
break; case DriveType.Network:
driveName = "网络驱动器(" + d.Name.Substring(, ) + ")";
break; default:
driveName = "未知(" + d.Name + ")";
break;
}
this.treeView1.Nodes.Add(d.Name, driveName);
}
}

显示文件夹内容:

private void ReadDir(TreeNodeMouseClickEventArgs e)
{
if (e.Node.Nodes.Count > )
{
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(, s.LastIndexOf("//") + ));
}
listBox1.Items.Clear();
string[] allFiles = Directory.GetFiles(e.Node.Name);
foreach (string sf in allFiles)
{
listBox1.Items.Add(sf.Remove(, sf.LastIndexOf("//") + ));
}
}
catch
{ }
}
e.Node.Expand();
}
}

实例2.TreeView实现拖拽操作

        

后台代码:

//来源:http://zxlovenet.cnblogs.com

private Point Position = new Point(, );

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

Winform控件学习-TreeView的更多相关文章

  1. Winform控件学习-TreeView - ContextMenuStrip

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

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

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

  3. Winform控件学习笔记【第六天】——TreeView

    TreeView控件用来显示信息的分级视图,如同Windows里的资源管理器的目录.TreeView控件中的各项信息都有一个与之相关的Node对象.TreeView显示Node对象的分层目录结构,每个 ...

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

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

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

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

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

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

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

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

  8. WinForm控件TreeView 只部分节点显示 CheckBox

    WinForm控件TreeView 只部分节点显示  CheckBox 用过asp.net的应该知道,要在treeview中实现上述功能可以使用ShowCheckBox 属性指定那些节点显示check ...

  9. [工作札记]02: .Net Winform控件TreeView最简递归绑定方法

    前言:Treeview控件是我们在WinForm.WebForm开发中经常使用的控件,需要从数据库动态加载数据,然后递归绑定每一个节点:同样,递归的思路在其他程序中也经常运用,包括.Net MVC等. ...

随机推荐

  1. HTML、JS、CSS之特殊字符

    可能这是冷知识了,并不为多数人知道像HTML.JS.CSS它们的特殊字符的写法,我也是在网上收录的在这里make一下: 箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HT ...

  2. centos7没有安装ifconfig命令的解决方法

    ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息,可是有些时候最小化安装CentOS等Linux发行版的时候会默认不安装ifconfig等命令,这时候你进入终端,运行ifc ...

  3. iOS开发那些事-iOS6苹果地图实用开发

    在iOS 6之后,不再使用谷歌地图了,而是使用苹果自己的地图,但是API编程接口没有太大的变化.开发人员不需要再学习很多新东西就能开发地图应用,这是负责任的做法.因此本节介绍的内容也同样适用于iOS5 ...

  4. vs2010 配置OpenGL

    为了之后的项目学习,需要学习OpenGL.在此进行下记录,方便查询. 准备工作: 到https://www.opengl.org/resources/libraries/glut/glutdlls37 ...

  5. 3月3日(4) Remove Duplicates from Sorted List

    原题 Remove Duplicates from Sorted List 有序单链表去重,delete 只能对指针起作用. /** * Definition for singly-linked li ...

  6. Ubantu 安装 LAMP环境

    1.通过 apt-get update 命令从ubantu软件源中下载可安装软件的列表. 2.通过一条命令可以一次性的安装LAMP apt-get install apache2 php5 mysql ...

  7. FPGA笔记-读取.dat文件

    读取.dat图像文件 .dat文件是matlab生成的图像文件 initial begin // Initialize Inputs CLK = 0; RST = 1; IMAGE_DATA = 0; ...

  8. CentOS6.5升级手动安装gcc4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  9. Markdown 使用说明

    使用说明 ========= @[手册|帮助|Markdown] - **马克飞象**是一款专为印象笔记打造的Markdown编辑器. - 特别需要说明的一点是增加了`@(笔记本)[标签]`语法,以此 ...

  10. Bootstrap模态框

    backdrop选项,当设置成false的时候, 背景不会出现半透明的遮盖层,当用户点击模态框外部时不会关闭模态框: 设置成true的时候会出现遮盖层,当用户点击模态框外部时则会关闭模态框. 那如果又 ...