1

TreeViewから継承したトライステートツリービューを使用しています。

http://www.codeproject.com/Articles/202435/Tri-State-Tree-View

テキストをグレーアウトする方法は明らかです。 マルチカラーのTreeNodeテキストを含むTreeView

説明されているイベントハンドラーを使用して、ri-Stateツリービューの特定のアイテムのテキストの色を簡単に変更できます。ただし、トライステートツリービューの特定のチェックボックスの色を変更して、グレー表示/無効になっているように見せることはできますか?

一般的なTreeVieuwではなく、コードプロジェクトのtreeviewを使用していることに注意してください。treenode のチェックボックスを無効にしてグレー表示します。

4

1 に答える 1

1

あなたの場合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.UncheckedDisabledCheckBoxState.CheckedDisabledCheckBoxState.MixedDisabled

CheckedDisabled次に、たとえばノードの外観に影響を与えたい場合は、次のようStateImageIndexTreeNodeプロパティのを変更する必要があります。myNode.StateImageIndex = (int)CheckedState.CheckedDisabled;

より複雑な部分は、ロジックの実装です。からのTriStateTreeView5つのイベントをオーバーライドするだけWindows.Forms.TreeViewです。新しい機能を処理するには、それらを変更する必要があります。おそらく上部にこのようなものを追加する必要があります: if(e.Node.StateImageIndex == (int)CheckedState.CheckedDisabled || ... ) return;しかし、すべての場合にそれほど単純ではない可能性があるため、すべてのメソッドを確認してください。

于 2013-03-20T07:15:50.123 に答える