2010-12-07 1 views
4

コントロールが無効なときにテキストの色を変更する方法。c#winformsでコントロールが無効になっているときに、別の色を設定します。無効なコントロールのTextColorを変更します。

+1

どのタイプのコントロールですか?異なるコントロールは異なる方法で動作し、これらのケースを異なる方法で処理する必要があります。 –

+0

ラベル、テキストボックス、ボタン。 –

答えて

3

編集:私はコメントでコーディと同じミスをしていたので、私の答えを修正しました。

それはどのコントロールかによって異なります。

たとえば、TextBoxの場合は、無効にする代わりにReadOnlyにすることができます。また、他のいくつかのコントロールでは、実際に無効にすることなく無効に見えるように同様の操作を行うことができます。

ただし、適切に行うには、オーナーに描画するか、OnPaintイベントを上書きしてテキストを描画する必要があります。

+0

+1オーナー誘導を示唆しています。これはこの問題を解決する正しい方法であり、ほぼすべての共通コントロールで動作することが保証されています。 –

+0

Label、TextBox、Buttonはowner-drawをサポートしていません。 –

+0

興味のある - それはうまくいかないでしょうか? –

1

コントロールを無効にすると、テキストの色も変更するだけです。

+3

問題のコントロールが 'TextBox'の場合、これは機能しません。その 'BackColor'は' ForeColor'(すなわちテキストの色)ではなく、無効になっているときにのみ変更できます。 –

0

あなたは多くのコントロールを持っている場合は、あなたがこれを行うことができます:

  • 制御タイプ
  • 依存を決定するために型構造である...場合は使用し、イベントでフォームOnChildAddedイベント
  • を添付し制御タイプに、イベントに適切なOnEnabledChangeイベント
  • を登録、変更テキストの色を適切

のTh途中で、すべてのフォームで機能するコードを作成し、必要なすべてのコントロールを使用するように徐々に拡張します。

私はそれがあなたが行きたいと思う方法であれば、いくつかのコードを提供します...

関連する問題