FreeTextBox 派生自 System.Web.UI.Control 类,而不象普通Web控件那样派生自: System.Web.UI.WebControls.WebControl 类。
System.Web.UI.Control 类是 System.Web.UI.WebControls.WebControl 类的基类。 不用后者,我估及是为了让Web 编辑器的每一个按钮,分割条、下拉列表框都是基于一个类这样的功能的实现。
如果使用 System.Web.UI.WebControls.WebControl 类派生的话,只需要重载 Render 即可.而这个重载函数只是输出html即可,这样显然对上面提到的功能实现上不是很面向对象的。
protected override void Render(HtmlTextWriter output)
{
output.Write(Text);
}
由于派生自:System.Web.UI.Control 类 ,FreeTextBox 重载了一下几个函数。
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender (e);
}
protected override object SaveViewState()
{
return base.SaveViewState ();
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState (savedState);
}
protected override void OnInit(EventArgs e)
{
base.OnInit (e);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
}
protected override void CreateChildControls()
{
base.CreateChildControls ();
}
另外,由于要进行服务器段跟客户端通讯。FreeTextBox 类同时具有以下几个接口:
IPostBackDataHandler, INamingContainer, IPostBackEventHandler
IPostBackDataHandler
定义 ASP.NET 服务器控件为自动加载回发数据而必须实现的方法
这个接口需要实现以下两个函数。
public bool LoadPostData(String postDataKey, NameValueCollection values)
{}
public void RaisePostDataChangedEvent()
{}
INamingContainer
标识在 Page 对象的控件层次结构内创建新 ID 命名空间的容器控件。这仅是一个标记接口。
IPostBackEventHandler
定义 ASP.NET 服务器控件为处理回发事件而必须实现的方法。
public void RaisePostBackEvent(string eventArgument)
{}