SetAllInputControlsColorsメソッドは、再帰的に動作し、コントロールのコンテナに入れ子にされたコントロールにも影響を及ぼす。すべき作業は、Page.Loadイベントのハンドラに、次のコードを書くだけだ。
' VB.NET SetAllIputControlsColors(Me, _ SystemColors.Window, _ SystemColors.WindowText, _ Color.Yellow, Color.Blue) // C# SetAllIputControlsColors(this, SystemColors.Window, SystemColors.WindowText, Color.Yellow, Color.Blue); |
Internet Explorerで見た場合の結果は、画面1のようになる。
入力フォーカスを持つコントロールの背景(そして前景)色を変更するには、ちょっとしたJavaScriptや幾つかのCSSトリックなコードが必要だ。そうすることで、ユーザーは乱雑なフォームでも、迷わなくなる。
各コントロールの個々のプロパティを変更するためにクライアントサイドのJavaScriptを使うことは、アクティブなコントロールのスタイルを変更するための、唯一のテクニックというわけではない。
実際、このアプローチは、フォームに少数のフィールドしか含まれていない場合に限って、うまく動作する。
フォームが多くのコントロールを含んでいる場合には、各コントロールのために生成されたJavaScriptの量がページのサイズを膨らませ、間接的に、レンダリング速度が遅くなってしまう。
そのような時には、別に分けたスタイルシートファイルの中で、CSS(Cascading Style Sheet)のクラスを用いて、通常状態のときとフォーカス状態のときのスタイルを定義するとよい。そして、コントロールがフォーカスを得たり失ったりしたときにコントロールのclassNameプロパティを設定する短いJavaScriptのコードを書く。
たとえば、CSSスタイルシートファイルにおいて、次のようなクラス定義をする。
.ActiveInputControl { background-color: Red; color: Yellow; font-weight: bold; } |
そして、次ページリスト4に示すSetAllInputControlsClassNameメソッドを、次のようにして呼び出す。
' VB.NET SetAllInputControlsClassName(Me, "", _ "ActiveInputControl") // C# SetAllInputControlsClassName(this, "", "ActiveInputControl"); |
HTMLのレンダリング結果は、次ページのようになる。
© Copyright 2001-2005 Fawcette Technical Publications