TreeView控件在窗体应用里面使用也是频率比较高的,我们在使用TreeView一般是对资源的分层展示,类似数据结构里面树的凹入表示法。很多公司都是使用TreeView控件作为文件显示信息的分级视图,如同Windows里的资源管理器的目录。TreeView控件中的各项信息都有一个与之相关的Node对象。TreeView显示Node对象的分层目录结构,每个Node对象均由一个Label对象和其相关的位图组成。在建立TreeView控件后,可以展开和折叠、显示或隐藏其中的节点。TreeView控件一般用来显示文件和目录结构、文档中的类层次、索引中的层次和其他具有分层目录结构的信息。
Index :获取树节点在树节点集合中的位置
Nodes :获取分配给树视图控件的树节点集合
Parent :获取或设置控件的父容器
SelectedNode :获取或设置当前在树视图控件中选定的树节点
ExpandAll :展开所有树节点
Checked: 获取或设置一个值,用以指示树节点是否处于选中状态
Text :获取或设置在树节点标签中显示的文本
Expand: 展开树节点
Clear: 清空树
Remove :从树视图控件中移除当前树节点。
我们采用简单案例来实现效果
注:我们这里属于静态添加数据,后面做的删除或者是添加也是静态的,后面做到删除是不起作用的
注:博主这里的添加并未添加到数据库,只是做一个静态的展示并未静态写入treeView,存在内存里结束就释放了
我们需要获取我们选中的结点判断它是否为空,不为空就代表有根结点可以添加,没有就返回选择我们需要添加子节点。
这里我们需要判断我们选择的结点的父结点是否为空,为空代表这个结点是根结点需要整个删除,不为空代表为子结点,我们从父结点找到子结点删除。
我们这里直接使用clear进行删除就可以了。没有其他操作
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TreeTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { TreeNode treeNode = new TreeNode(textBox1.Text, 2, 2); treeView1.Nodes.Add(treeNode); treeView1.Select(); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { } private void button2_Click(object sender, EventArgs e) { TreeNode selectdnode = treeView1.SelectedNode; if(selectdnode!=null) { TreeNode chnode = new TreeNode(textBox2.Text, 2, 2); selectdnode.Nodes.Add(chnode); selectdnode.Expand(); treeView1.Select(); } else { MessageBox.Show("请选择需要添加子节点"); } } private void button3_Click(object sender, EventArgs e) { TreeNode selectnode = treeView1.SelectedNode; TreeNode parentnode = selectnode.Parent; if(parentnode == null) { treeView1.Nodes.Remove(selectnode); } else { parentnode.Nodes.Remove(selectnode); } treeView1.Select(); } private void button4_Click(object sender, EventArgs e) { treeView1.Nodes.Clear(); } private void button5_Click(object sender, EventArgs e) { this.textBox1.Clear(); this.textBox2.Clear(); } } }
TreeView控件讲解博主并未使用数据库进行操作,而是简单的使用变量来操作,我们在使用数据库是需要使用结点的深度建立,每一层可能会有一个表,最终到最底层才是我们的数据,我们获取每层Name生成树,实现资源的凹入表示法,