あなたの場合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
この部分は、すべての可能な状態のビットマップを格納するを埋めます。、、、およびにすでに存在する他の3つの画像を追加する必要がありSystem.Windows.Forms.VisualStyles
ます。CheckBoxState.UncheckedDisabled
CheckBoxState.CheckedDisabled
CheckBoxState.MixedDisabled
CheckedDisabled
次に、たとえばノードの外観に影響を与えたい場合は、次のようStateImageIndex
にTreeNode
プロパティのを変更する必要があります。myNode.StateImageIndex = (int)CheckedState.CheckedDisabled;
より複雑な部分は、ロジックの実装です。からのTriStateTreeView
5つのイベントをオーバーライドするだけWindows.Forms.TreeView
です。新しい機能を処理するには、それらを変更する必要があります。おそらく上部にこのようなものを追加する必要があります:
if(e.Node.StateImageIndex == (int)CheckedState.CheckedDisabled || ... ) return;
しかし、すべての場合にそれほど単純ではない可能性があるため、すべてのメソッドを確認してください。