三. 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 )
{
//定位根節點
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 ( ) ;
}
}
}
在成功編譯TreeVIEw.cs後,運行的程序界面如下:
圖01:C#編寫的操作TreeVIEw組件的程序運行界面
四. 總結:
TreeView組件是一個既令程序員頭痛,又令程序員難以割捨的組件。這是因為TreeView組件使用非常靈活,顯示內容有層次,並且"容量"相對又比較大。但同時在實際的編程比起其他組件又相對麻煩。掌握了本文介紹的這些用C#操作TreeView組件的基本方法後,我想對於在使用TreeVIEw組件中的一般的問題,應該都能夠克服了吧。