天天看點

C#中TreeView樹配圖檔

版權聲明:歡迎評論和轉載,轉載請注明來源。 https://blog.csdn.net/zy332719794/article/details/9013691

先上效果:

這是一個TreeView控件的效果。

控件的用法就不多說了,具體參考:

http://msdn.microsoft.com/zh-cn/library/vstudio/system.windows.forms.treeview(v=vs.100).aspx

其中,預設是沒有圖檔的,當需要在每一個節點加圖檔時,首先需要設定圖檔清單,然後再引用。

具體操作如下:

1. 初始化圖檔清單

初始化圖檔清單的用處是,把圖檔加入到控件的ImageList屬性清單中,以便每個樹節點調用。

類似代碼如下:

private void InitImageList()
        {
            treeView.ImageList = new ImageList();
            treeView.ImageList.Images.Add("GdbSource", Resource.GdbSource);
            treeView.ImageList.Images.Add("Database", Resource.GdbConnection16);
            treeView.ImageList.Images.Add("FeatureEmpty", Resource.GdbFeatureClassEmpty16);
            treeView.ImageList.Images.Add("FeatureLine", Resource.GdbFeatureClassLine16);
            treeView.ImageList.Images.Add("FeaturePoint", Resource.GdbFeatureClassPoint16);
            treeView.ImageList.Images.Add("FeaturePolygon", Resource.GdbFeatureClassPolygon16);
            treeView.ImageList.Images.Add("Dataset", Resource.GdbFeatureDataset16);
        }           

Resource.***是引用的資源檔案,你也可以引用檔案夾路徑檔案,Add方法後面的參數是Image類型。

關于引用資源檔案,參考:

http://blog.csdn.net/zy332719794/article/details/8971154

2. 樹節點引用圖檔

因為在第一步我們已經設定好了圖檔清單,下面我們隻需要在添加樹節點時,直接掉用就可以了

private void NodeAddFeatureClass(TreeNode node, IFeatureClass featureClass)
        {
            switch (featureClass.ShapeType)
            {
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
                    node.Nodes.Add("FeaturePoint", featureClass.AliasName, "FeaturePoint", "FeaturePoint");
                    break;
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
                    node.Nodes.Add("FeatureLine", featureClass.AliasName, "FeatureLine", "FeatureLine");
                    break;
                case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
                    node.Nodes.Add("FeaturePolygon", featureClass.AliasName, "FeaturePolygon", "FeaturePolygon");
                    break;
                default:
                    node.Nodes.Add("FeatureEmpty", featureClass.AliasName, "FeatureEmpty", "FeatureEmpty");
                    break;
            }
        }           

添加節點時,有以下幾個方法

Add(String)

  --- 将具有指定标簽文本的新樹節點添加到目前樹節點集合的末尾。

Add(TreeNode)

   ---将先前建立的樹節點添加到樹節點集合的末尾。

Add(String,

String)

   ---指定節點KEY和顯示文本。

String, Int32)

   ---指定節點KEY,顯示文本,圖檔編号

String, String)

   ---指定節點KEY,顯示文本,圖檔KEY

Add(String, String, Int32, Int32)

  ---指定節點KEY,顯示文本,圖檔編号,選中時圖檔編号

Add(String, String, String,

String)    ---指定節點KEY,顯示文本,圖檔編号,選中時圖檔KEY

3. 注意

(1) 我們在添加圖檔到 ImageList 的時候,可以選擇不添加KEY的Add方法,但後面調用時,就必須用

或者

String, Int32, Int32)

的方法添加樹節點。

(2) 如果我們添加了圖檔清單,但在添加子節點時沒有調用具體的圖檔,那麼每個節點會預設添加上ImageList第一個(預設)圖檔。

(3) 如果添加樹節點時,沒有設定選中時(第四個參數)圖檔編号或key,那麼會在選中時,圖示會變成ImageList第一個(預設)圖檔。