C#语言有很多值得学习的地方,这里我们主要介绍C#编写操作TreeView组件,包括介绍加入子节点、兄弟节点、删除节点、折叠、展开等操作等方面。
C#编写操作TreeView组件的例子:
下面是C#编写操作TreeView组件的例子,在这个例子中,结合以上介绍的常用方法和一般方法,基本覆盖来TreeView组件的一些最常用的操作。譬如可以灵活的程序中的TreeView组件中,进行加入子节点、兄弟节点、删除节点、折叠、展开等操作。其中前三种基本操作是通过程序中弹出菜单中的功能来实现的,后面操作是通过程序中的按钮来实现的。下面是此程序的代码节略(TreeView.cs):
- 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 )
- {
- //定位根节点
- treeView1treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;
- //展开组件中的所有节点
- treeView1.SelectedNode.ExpandAll ( ) ;
- }
- private void button3_Click ( object sender , System.EventArgs e )
- {
- //定位根节点
- treeView1treeView1.SelectedNode = treeView1.Nodes [ 0 ] ;
- //折叠组件中所有节点
- treeView1.SelectedNode.Collapse ( ) ;
- }
- }
- }
【编辑推荐】