下面是一个自定义控件的demo : 可设置默认值的的文本框控件。
1.新建类库CustomerControl , 添加引用system.web.UI 和system.web.UI.WebControls。
System.Web.UI: 包含ASP.NET服务器控件基本的类,Control类位于该命名空间下。
System.Web.UI.WebControls: 包含在页面上创建ASP.NET服务端控件的类,常用的Button、TextBox位于该命名空间下。
2.添加类 命名为DefaultTextBox,并继承WebControl;
3. 添加属性 DefaultValue ;将值保存到ViewState中防止回发时数据丢失。
public string DefaultValue
{
get
{
object obj = ViewState["defaultValue"];
return obj == null ? string.Empty : Convert.ToString(obj);
}
set
{
ViewState["defaultValue"] = value;
}
}
4.重写CreateChildControls方法用于添加自己的控件;
protected override void CreateChildControls()
{
TextBox txt = new TextBox();
txt.Text = DefaultValue;
txt.Style.Add(HtmlTextWriterStyle.Color,"gray");// 设置字体为灰色
this.Controls.Add(txt);
base.CreateChildControls();
}
5.ok,搞定了。编译项目,生成CustomerControl.dll。
6.网站添加引用CustomerControl.dll, 向你的网页注册该用户控件:<%@ Register Namespace="CustomControl" Assembly="CustomControl" TagPrefix="txt" %>;之后就可以像用微软的服务端控件一样了。
<txt:DefaultTextBox runat="server" DefaultValue="百度一下">
</txt:DefaultTextBox>