初學C#編程,TreeView控制項的學習(WinForm)

來源:互聯網
上載者:User

標籤:

    建立一個WinForm項目之後,在表單中放入一個treeView控制項(treeView1),根據資料庫資料填充建立樹節點。資料庫的結構如下:

            ID        Title        P_ID

            a          根節點           0

            b          子節點1         a

            c          子節點2         a

    預設P_ID=0的節點為根節點a,下面有2個子節點b、c。

    ID列為不重複的文本,在treeView1中表示TreeNode的Name屬性;

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

    P_ID列為父ID,在treeView1中表示TreeNode的Tag屬性。


一、用遞迴方法進行曆遍添加所有節點到treeView1。

在WinForm的Load事件中載入並建立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; //一般在完成樹節點之後


(2)treeView1_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[]。


初學C#編程,TreeView控制項的學習(WinForm)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.