這個過程相對來說比較簡單,網上也有不少資料,但是自己在做過之后為了記住,算是給自己寫一個博客吧。
下面直接上具體的流程
1、前提
控件使用的都是DevExpress和winform的原生控件兩種;
2、所需界面控件
在界面上需要添加兩個控件:一是DevExpress的Treelist樹,二是winform的imagelist(或者使用DevExpress的imagecollection也可以)
3、為imagelist添加圖片
因為是樹結構目錄的節點圖片,因此大小一般要求是16x16的。將需要使用的圖片添加到imagelist中。
在這里需要注意的是,如果中途刪除了圖片,一定要重新確認imagelist中剩余圖片的索引,因為imagelist刪除圖片后會自動變更剩余圖片的索引。
4、treelist屬性設置
找到treelist控件的SelectImageList屬性,將剛剛建立好的imagelist綁定到這個屬性上;
5、treelist事件綁定
找到treelist的CustomDrawNodeImages事件,雙擊建立事件執行方法並添加控制代碼:
private void treeList1_CustomDrawNodeImages(object sender, DevExpress.XtraTreeList.CustomDrawNodeImagesEventArgs e) { //如果有子節點,那么需要根據節點是否展開的狀態賦值不同的圖片;從而實現節點的展開和關閉是不同圖片的功能 if (e.Node.HasChildren) if (e.Node.Expanded) e.SelectImageIndex = 1; else e.SelectImageIndex = 0; else e.SelectImageIndex = 2; }
方法中的具體控制代碼可以根據需要來實際確認。另外,其中imageIndex的數值就是第三步中imagelist中需要使用的節點圖片的索引值。
同時,在非葉子節點的狀態下增加是否展開狀態的判斷,可以實現節點在打開和關閉的不同狀態下是不同圖片的功能。
**注意**:必須使用SelectImageIndex這個參數,而不能使用e.Node.ImageIndex的方式賦值(此時會出現“集合已修改;可能無法執行枚舉操作”的錯誤,但是目前不理解為什么為出現這個問題,暫時先記住正確的使用方式吧)。
6、結果
經過以上步驟,在程序運行起來后,樹節點就會綁定上指定的圖片;同時實現節點的打開和關閉狀態圖標變化的功能。
