关于C#中的treeView

本文介绍了在C#中操作TreeView组件的基本方法,包括添加子节点、添加兄弟节点、删除节点等核心功能,并提供了完整的示例代码。

(1).加入子节点: 

   所谓子节点,就是处于选定节点的下一级节点。加入子节点的具体过程是:首先要在TreeView组件中定位要加入的子节点的位置,然后创建一个节点对象,然后利用TreeVeiw类中对节点的加入方法(即:Add ( )方法),加入此节点对象。下面就是在treeView1组件中加入一个子节点的具体代码: 

//首先判断是否选定组件中的位置 
if ( treeView1.SelectedNode == null ) 

MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 

else 

//创建一个节点对象,并初始化 
TreeNode tmp ; 
tmp = new TreeNode ( "节点名称" ) ; 
//在TreeView组件中加入子节点 
treeView1.SelectedNode.Nodes.Add ( tmp ) ; 
treeView1.SelectedNode = tmp ; 
treeView1.ExpandAll ( ) ; 
}

 

 

(2).加入兄弟节点: 

   所谓兄弟节点,就是在选定的节点的平级的节点。加入兄弟节点的方法和加入子节点的方法基本一致,只是在最后的实现方法上有着略微的区别。加入兄弟节点的具体步骤,首先也是要确定要加入的兄弟节点所处的位置,接着定义一个节点对象,最后调用TreeView类中对兄弟节点加入的方法,加入此节点对象。加入兄弟节点和加入子节点的最大区别就在于这最后一步。希望读者能够注意。下面是在TreeView组件加入一个兄弟节点的具体代码: 

//首先判断是否选定组件中节点的位置 
if ( treeView1.SelectedNode == null ) 

MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 

else 

//创建一个节点对象,并初始化 
TreeNode tmp ; 
tmp = new TreeNode ( textBox1.Text ) ; 
//在TreeView组件中加入兄弟节点 
treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ; 
treeView1.ExpandAll ( ) ; 
}
(3).删除节点: 

   删除节点就是删除TreeView组件中选定的节点,删除节点可以是子节点,也可以是兄弟节点,但无论节点的性质如何,必须保证要删除的节点没有下一级节点,否则必须先删除此节点中的所有下一级节点,然后再删除此节点。删除节点比起上面的二个操作要显得略微简单,具体方法是:首先判断要删除的节点是否存在下一级节点,如果不存在,就调用TreeView类中的Remove ( )方法,就可以删除节点了。下面是删除TreeView组件中节点的具体代码: 

//判断选定的节点是否存在下一级节点 
if ( treeView1.SelectedNode.Nodes.Count == 0 ) 
//删除节点 
treeView1.SelectedNode.Remove ( ) ; 
else 
MessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;
其他一些用法:

< I > .展开所有节点: 

   要展开TreeView组件中的所有节点,首先就要把选定的节点指针定位在TreeView组件的根节点上,然后调用选定组件的ExpandAll方法就可以了,下面是具体代码: 

//定位根节点 
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ; 
//展开组件中的所有节点 
treeView1.SelectedNode.ExpandAll ( ) ; 

   < II > .展开选定节点的下一级节点: 

   由于只是展开下一级节点,所以就没有必要用ExpandAll ( )方法了。展开下一级节点只需要调用Expand ( )方法就可以了,下面是具体的实现代码: 

treeView1.SelectedNode.Expand ( ) ; 

   < III > .折叠所有节点: 

   折叠所有节点和展开所有节点是一组互操作,具体实现的思路也大致相同,折叠所有节点也是首先要把选定的节点指针定位在根节点上,然后调用选定组件的Collapse ( )就可以了,下面是具体的实现代码: 

//定位根节点 
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ; 
//折叠组件中所有节点 
treeView1.SelectedNode.Collapse ( ) ; 
   至此已经把在C#操作TreeView组件的常用方法和一般方法基本都介绍完了。

 

 

 

 

一个例子:

using System ; 
using System.Drawing ; 
using System.Collections ; 
using System.ComponentModel ; 
using System.Windows.Forms ; 
using System.Data ; 
namespace 全面掌握TreeView组件的使用方法 

/// Form1 的摘要说明。 
public class Form1 : Form 

private TreeView treeView1 ; 
private Button button1 ; 
private Button button2 ; 
private Button button3 ; 
private MenuItem menuItem2 ; 
private MenuItem menuItem3 ; 
private MenuItem menuItem4 ; 
private ContextMenu contextMenu1 ; 
private TextBox textBox1 ; 
private Label label1 ; 
/// 必需的设计器变量。 
private System.ComponentModel.Container components = null ; 
public Form1 ( ) 

//初始化窗体中的组件 
InitializeComponent ( ) ; 

/// 清理所有正在使用的资源。 
protected override void Dispose ( bool disposing ) 

if ( disposing ) 

if ( components != null ) 

components.Dispose ( ) ; 


base.Dispose ( disposing ) ; 

private void InitializeComponent ( ) 

   //初始化代码(略) 

[ STAThread ] 
static void Main ( ) 

Application.Run ( new Form1 ( ) ) ; 
}

private void AddChildNode ( ) 

//首先判断是否选定组件中的位置 
if ( treeView1.SelectedNode == null ) 

MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 

else 

if ( textBox1.Text != "" ) 

//创建一个节点对象,并初始化 
TreeNode tmp ; 
tmp = new TreeNode ( textBox1.Text ) ; 
//在TreeView组件中加入子节点 
treeView1.SelectedNode.Nodes.Add ( tmp ) ; 
treeView1.SelectedNode = tmp ; 
treeView1.ExpandAll ( ) ; 

else 

MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 
return ; 



private void AddParent ( ) 

//首先判断是否选定组件中节点的位置 
if ( treeView1.SelectedNode == null ) 

MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 

else 

if ( textBox1.Text != "" ) 

//创建一个节点对象,并初始化 
TreeNode tmp ; 
tmp = new TreeNode ( textBox1.Text ) ; 
//在TreeView组件中加入兄弟节点 
treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ; 
treeView1.ExpandAll ( ) ; 

else 

MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 
return ; 


TreeNode tnode = new TreeNode ( textBox1.Text ) ; 
}

private void treeView1_MouseDown ( object sender , MouseEventArgs e ) 

if ( e.Button == MouseButtons.Right ) 
contextMenu1.Show ( this , new Point ( e.X , e.Y )
) ; 

private void button1_Click ( object sender , System.EventArgs e ) 

treeView1.SelectedNode.Expand ( ) ; 

private void menuItem2_Click ( object sender , System.EventArgs e ) 

AddChildNode ( ) ; 

private void menuItem3_Click ( object sender , System.EventArgs e ) 

AddParent ( ) ; 
}

private void menuItem4_Click ( object sender , System.EventArgs e ) 

//判断选定的节点是否存在下一级节点 
if ( treeView1.SelectedNode.Nodes.Count == 0 ) 
//删除节点 
treeView1.SelectedNode.Remove ( ) ; 
else 
MessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ; 

private void button2_Click ( object sender , System.EventArgs e ) 

//定位根节点 
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ; 
//展开组件中的所有节点 
treeView1.SelectedNode.ExpandAll ( ) ; 

private void button3_Click ( object sender , System.EventArgs e ) 

//定位根节点 
treeView1.SelectedNode = treeView1.Nodes [ 0 ] ; 
//折叠组件中所有节点 
treeView1.SelectedNode.Collapse ( ) ; 


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值