最近訪問了建行網站時 https://ibsbjstar.ccb.com.cn/V5/index.html#,(其實在oblog,http://www.oblog.cn也採用了類似的技巧,不過方法不同罷了)
可以發現,當選擇不同的文字框,可以出現不同的顏色,要完成這個功能很簡單,但是如果有很多類似的功能,如果一個個設定控制項樣式顯然很累,一個簡單的處理方法寫一個方法讓系統執行就可以了,看如下代碼:
class BasePage:Page
{
public static void SetInputControlsHighlight(Control container, string className, bool onlyTextBoxes)
{
foreach (Control ctl in container.Controls)
{
if ((onlyTextBoxes && ctl is TextBox) ctl is TextBox ctl is DropDownList
ctl is ListBox ctl is CheckBox ctl is RadioButton
ctl is RadioButtonList ctl is CheckBoxList)
{
WebControl wctl = ctl as WebControl;
wctl.Attributes.Add("onfocus", string.Format("this.className = '{0}';", className));
wctl.Attributes.Add("onblur", "this.className = '';");
}
else
{
if (ctl.Controls.Count > 0)
SetInputControlsHighlight(ctl, className, onlyTextBoxes);
}
}
}
}
定義一個類:主要就是重寫onfocus和onblur,當使用者選擇不同控制項時,就出現不同的樣式,樣式名稱需要你自己定義。
這裡需要注意:這個BasePage是從Page類派生,所以,以後建立頁面時應該是:
WebForm1:MyPage
{
//調用SetInputControlsHighlight方法
}
這樣就可以了