你的情況存在是因爲TreeNode
不具有Enabled
財產沒有簡單/快捷方式。你將不得不自己添加這個函數。我看了一下TriStateTreeView
的代碼,我可以發表一些評論來幫助你。
拱起部會很容易,你會發現在構造函數中:
case 0: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.UncheckedNormal);
break;
case 1: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.CheckedNormal);
break;
case 2: CheckBoxRenderer.DrawCheckBox(chkGraphics, new Point(0, 1), CheckBoxState.MixedNormal);
break;
這部分填充StateImageList
將存儲位圖每一種可能的狀態。您需要添加System.Windows.Forms.VisualStyles
:CheckBoxState.UncheckedDisabled
,CheckBoxState.CheckedDisabled
和CheckBoxState.MixedDisabled
中已經存在的其他三張照片。
然後,當你想爲實例影響CheckedDisabled
appearence到節點上,您將需要更改TreeNode
財產StateImageIndex
,這樣myNode.StateImageIndex = (int)CheckedState.CheckedDisabled;
更復雜的部分將是邏輯的實現。 TriStateTreeView
只覆蓋Windows.Forms.TreeView
中的五個事件,您將需要更改它們以處理您的新功能。您可能必須在頂部添加如下內容: if(e.Node.StateImageIndex == (int)CheckedState.CheckedDisabled || ...) return;
但在每種情況下可能都不那麼簡單,因此請確保檢查每種方法。
你不能在選定的節點和設置特定的複選框這樣的方式..? – MethodMan 2013-03-19 19:42:40