C#編程,TreeView控件的學習


 新建一個WinForm項目之后,在窗體中放入一個treeView控件(treeView1),根據數據庫數據填充建立樹節點。數據庫的結構如下:

            ID        Title        P_ID

            a          根節點           0

            b          子節點1         a

            c          子節點2         a

    默認P_ID=0的節點為根節點a,下面有2個子節點bc

    ID列為不重復的文本,在treeView1中表示TreeNodeName屬性;

    Title列為普通文本,在treeView1中表示TreeNodeText屬性;

    P_ID列為父ID,在treeView1中表示TreeNodeTag屬性。

 

一、用遞歸方法進行歷遍添加所有節點到treeView1

WinFormLoad事件中載入並建立treeView1的節點,用了幾個自定義的方法完成添加節點的操作:

private void CreatTree() {    TreeNode node = new TreeNode(); //定義根節點    Model.getByPID("0"); //自定義的獲取根節點的方法,並轉為屬性    node.Name = Model.ID; //將類Model的各個屬性賦值給根節點    node.Text = Model.Title;    node.Tag = Model.P_ID;    treeView1.Nodes.Add(node);//將節點node作為treeView1的根節點    cTree(node,node.Name); //調用另一個方法為根節點添加其他    treeView1.ExpandAll(); //展開所有節點 }
private void cTree(TreeNode node,string ID)//當前節點,節點的ID {     node.Name = ID;    DataTable table = PublicTools.AccessHelper.ExecuteDataTable("select * from CodeEditor where P_ID = @P_ID", new OleDbParameter("@P_ID", ID)); //用自定義的方法根據當前節點的ID查找所有子節點 foreach( DataRow row in table.Rows)//歷遍所有子節點,賦值並添加 { TreeNode n =new TreeNode(); n.Name = (string)row["ID"]; n.Text = (string)row["Title"];     n.Tag  = (string)row["P_ID"];      node.Nodes.Add(n); cTree(n,n.Name); //用遞歸的方法添加完整的樹節點  } }

 

二、處理一般的事件和設置

1、樹節點的單擊事件:treeView1_AfterSelect,代碼:

//使節點標簽可編輯 treeView1.LabelEdit = true;

 

2、樹節點修改完成后事件:treeView1_AfterLabelEdit,代碼:

//使節點標簽不可編輯 treeView1.LabelEdit = false;

 

3、樹節點失去焦點仍高亮的設置:

1

treeView1.HideSelection = false; //一般在完成樹節點之后

 

2treeView1_DrawNode 事件:

e.DrawDefault = true; //這里只是一個默認值,可添加重繪節點的具體代碼

 

三、TreeView控件和TreeNode的常用成員:

AfterSelect //單擊事件

TreeView.HideSelection = False;  //可讓選中節點保持高亮

Node = TreeView.SelectedNode; //已選中的當前樹節點

string I = treeView1.SelectedNode.Index.ToString()

   //當前節點的索引值,由0開始,只限於同父、同級的節點集合

treeView1.SelectedNode.Text = String; //設置當前節點的文本

  string String = treeView1.SelectedNode.Text; //獲取當前節點的文本

treeView1.SelectedNode.FullPath.ToString();

  //當前節點的全路徑,從根節點開始到當前節點,由節點的Text屬性加“\”連接而成的字符串,最后的節點后面沒有“\

treeView1.SelectedNode.Tag;

  //當前節點的其他信息,可以是各種類型,也可以是對象

treeView1.SelectedNode.Name:樹節點的名稱,也是(TreeNodes集合)TreeNodeCollection 中該節點的鍵(key

treeView1.SelectedNode.Parent; //當前樹節點的父樹節點。

treeView1.SelectedNode.Level; //樹視圖的深度(從零開始)

 

四、在treeView控件中,成員Nodes其實就是一個TreeNode的集合,所以也可以使用TreeNodeCollection的成員:

TreeNodeCollection 類,TreeNodes集合類

treeView1.Nodes.Add(字符串);

  //以字符串為顯示文本添加節點到樹集合的末尾

treeView1.Nodes.Add(TreeNode);

  //將現有的樹節點添加到樹節點集合的末尾。

treeView1.Nodes.Add(String, String):創建具有指定鍵和文本的新樹節點,並將其添加到集合中。

treeView1.Nodes.Find(string key,bool searchAllChildren):查找具有指定鍵的樹節點,可以選擇搜索子節點,返回一個list[]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM