特集:正規表現によるテキストファイルパースVisual Studio Magazine(7/8 ページ)

» 2004年12月07日 14時05分 公開
[Francesco Balena, Marco Bellinaso,FTPOnline]

 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のようになる。

画面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

注目のテーマ