CTreeViewUI裡面自帶了複選的功能,但是複選功能存在bug:
1)當一個分組下面存在子項時,子項被手動全選後,分組的複選框沒有自動變為選中狀态
2)當一個分組下面存在子項時,當所有子項都取消選中狀态時,分組的複選框還是選中狀态
分組的CTreeNodeUI控件應該自動判斷是否為選中狀态,bug被修複後的效果如下:
修複過程:
當某個複選框被單擊後會觸發CTreeViewUI控件的OnCheckBoxChanged函數,這時應該在這裡做出判斷,來決定分組的選中狀态,為此我給CTreeNodeUI控件增加了IsAllChildChecked函數。
修改後的OnCheckBoxChanged函數如下:
當某個複選框被單擊後,去通知他的父控件,讓父控件判斷是否應該是選中狀态。為CTreeNodeUI控件增加的IsAllChildChecked函數如下:
總結:
bug的修複代碼已經送出到我自己的Duilib庫。
Redrain 2014.12.30