C#中TreeView組件使用方法初步
TreeView組件是由多個類來定義的,TreeView組件是由命名空間"System.Windows.Forms"中的"TreeView"類來定義的,而其中的節點(即Node),是由命名空間"System.Windows.Forms"中的"TreeNode"來定義的。所以當在程序中創建一個TreeView對象,其實隻是創建了一個可以放置節點的"容器"。而在這個容器中加入一個節點,其實就是加入了從"TreeNode"類中創建的一個節點對象;同樣刪除一個節點,也就是刪除一個"TreeNode"節點對象。(1).微軟視窗2000 服務器版
(2)..Net Framework SDK 正式版
TreeView組件雖然是一個操作起來比較麻煩的組件,但歸根到底,可以總結為三種基本操作:加入子節點、加入兄弟節點和刪除節點。掌握了這三種常用操作,對於在編程中靈活運用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 ) ; |
(4).TreeView組件的一些其他常用操作:
其他的一些常用操作比起上麵的三種操作,在具體實現上要顯得簡單許多。這些常用操作無非是,展開所有節點,展開指定的節點、和折疊所有節點。下麵就來具體介紹一下:
< 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組件的常用方法和一般方法基本都介紹完了。
三. 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組件中的一般的問題,應該都能夠克服了吧。
最後更新:2017-04-02 00:06:40