【使い方】
例:TextBox が Focus されたときに文字色/背景色を切替えるイベントを設定する。
// currentForeColor, currentBackColor は、カレントカラー
/// <summary>
/// クライアントに表示される内容を書き込むメソッド。
/// </summary>
protected override void Render( System.Web.UI.HtmlTextWriter writer )
{
//Debug.WriteLine("Control Render : Start");
// カレントカラーが設定された場合、クライアントサイドで呼び出すイベントを設定する
if ( !currentForeColor.IsEmpty || !currentBackColor.IsEmpty )
{
// スクリプトを実行するプログラムを作成します。
// Focus時のイベント呼び出し定義
string scriptFocusInvoke = string.Format("JavaScript:OnTextBoxFocusChanged(this,'#{0:X}','#{1:X}');"
, currentForeColor.ToArgb() & 0x00ffffff, currentBackColor.ToArgb() & 0x00ffffff );
// Blur時のイベント呼び出し定義
string scriptBlurInvoke = string.Format("JavaScript:OnTextBoxFocusChanged(this,'#{0:X}','#{1:X}');"
, this.ForeColor.ToArgb() & 0x00ffffff, this.BackColor.ToArgb() & 0x00ffffff );
// イベント呼び出しを設定する
this.Attributes.Add("onfocus", scriptFocusInvoke);
this.Attributes.Add("onblur", scriptBlurInvoke);
}
// 元のメソッドを呼び出す
base.Render( writer );
TextBox が Focus されたときのイベントスクリプトの設定例
/// <summary>
/// JavaScriptを出力するメソッド。
/// </summary>
protected override void OnPreRender( System.EventArgs e )
{
// スクリプトを作成します。
string str =
"<script language=\"javascript\"><!--{TextBox}\n"
+ " function OnTextBoxFocusChanged(txtBox, foreColor, backColor) {\n"
+ " if ( foreColor != null && foreColor != \"#0\" ){\n"
+ " txtBox.style.color=foreColor;\n"
+ " }else{\n"
+ " txtBox.style.color=\"\";\n"
+ " }\n"
+ " if ( backColor != null && backColor != \"#0\" ){\n"
+ " txtBox.style.backgroundColor=backColor;\n"
+ " }else{\n"
+ " txtBox.style.backgroundColor=\"\";\n"
+ " }\n"
+ " }\n"
+ " --></script>\n";
// ページにスクリプトを登録します。
Page.RegisterClientScriptBlock( "OnTextBoxFocusChanged", str );
}
|