1. 程式人生 > >關於TreeView控制元件

關於TreeView控制元件

【簡介】
   TreeView控制元件用於顯示按照樹形結構進行組織的資料。該控制元件中的一個樹形圖由節點(TreeNode)和連線線組成。節點是TreeView的基本組成單元,一個樹的節點又包括文字(Text)和資料(Data)。其中,文字是string類,資料是無定形指標,可以指向一個與節點相聯絡的資料結構。
【簡單使用】
   1、C#建立一個windows窗體

在這裡插入圖片描述
  2、開啟主窗體的設計介面,在左側的工具箱找到TreeView控制元件,點選拖拽到窗體設計介面上

在這裡插入圖片描述
  3、屬性修改,其中屬性包括:
  BorderStyle:確定控制元件邊界風格,包括Fixed3D、FixedSingle和None三種;
  ImageIndex:節點的預設影象索引,這裡的影象是指存放於ImageList屬性中的影象;
  ImageList:從中獲取節點影象的ImageList控制元件;
  Nodes:控制元件中的根節點
  SelectedImageIndex:選定節點的預設影象索引;
  ShowLines:指示是否在同級節點之間以及父節點和子節點之間顯示連線;
  ShowPlusMinus:指示是否在父節點旁邊顯示加/減按鈕
  ShowRootLines:指示是否在根節點之間顯示連線
  StateImageList:樹檢視用於表示自定義狀態的ImageList控制元件
  CheckBoxes:指示是否在節點旁顯示覆選框
  使用這些屬性進行不同的搭配,就可以獲得不同的顯示風格
  對於資料的加入,可以選擇Nodes屬性,點選左側的小按鈕,在彈出的“TreeNode編輯器”中新增節點資料。首先點選左下角的“新增根”按鈕新增一個根節點,在右側屬性視窗修改相關屬性,如Text為顯示值;其次在選中某一根節點後,點選左下角的“新增子級”按鈕新增一個子節點,同樣在右側屬性欄修改相關屬性
在這裡插入圖片描述


在這裡插入圖片描述

【程式碼】
   僅僅是把控制元件新增上之後並不能執行此控制元件,所以就需要我們在程式碼窗體去編寫響應此控制元件活動的程式碼,程式碼如下:
       protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
       {
            for (int i = 0; i < this.TreeView1.Nodes.Count; i++)
            {//跌迭根節點
                if (this.TreeView1 .SelectedValue==this.TreeView1 .Nodes [i].Value )
                {//如果選中的是根節點,就展開
                    this.TreeView1.SelectedNode.Expanded = true;
                }
                else
                {//如果選中的不是根節點
                    for (int j = 0; j < this.TreeView1.SelectedNode.Parent.ChildNodes.Count; j++)
                    {//就讓選中節點的所有同級節點收縮
                        this.TreeView1.SelectedNode.Parent.ChildNodes[j].CollapseAll();
                    }
                    //然後再展開選中的節點及其所有父節點
                    this.TreeView1.SelectedNode.Parent.Expanded = true;
                    this.TreeView1.SelectedNode.Expanded = true;
                }
           }

【問題】
   如果只是像上邊程式碼那樣編寫的話會出現一個問題,那就是這個選單的伸縮只能是點選前邊的小加號實現,點選問題並沒有效果,如果想要解決,方法如下:
tn.SelectAction = TreeNodeSelectAction.Expand; //在控制元件上加上這個屬性

  這裡需要注意的是,這裡的tn指的是節點,即TreeNode ,所以上邊的程式碼也就是treeview.Nodes[index].SelectAction

【總結】
   這個控制元件還有一些其他的屬性,在這裡就不做過多的總結了,如果大家感興趣可以多去了解...