比如
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Specialized;namespace Controls.MyControl
{
/// <summary>
/// WebCustomControl5 的摘要说明。
/// </summary>
public class WebCustomControl5 : System.Web.UI.WebControls.WebControl,System.Web.UI.IPostBackDataHandler
{
//实现一个共有构造寒暑,它将调用基类构造函数,来指定服务器控件应该输出一个input元素
public WebCustomControl5():base("input")
{} public  String  Text  
{
get  
{
return  (String)ViewState["Text"];
}
set  
{
ViewState["Text"]  =  value;
}
} //定义一个EventHandler类型的公有事件
public event EventHandler TextChanged; //使用一个NameValueCollection传递在表单中提交的所有回送数据
public  virtual  bool  LoadPostData(string  postDataKey,NameValueCollection  postCollection)  
{ String  presentValue  =  Text;
String  postedValue  =  postCollection[postDataKey]; if  (presentValue  ==  null  ||  !presentValue.Equals(postedValue))  
{
Text  =  postedValue;
return  true;
}
return  false;
}
//由于在LoadData中引发事件会引起不可预知的结果,所以一定要在RaisePostDataChangedEvent方法中引发事件
public  virtual  void  RaisePostDataChangedEvent()  
{
OnTextChanged(EventArgs.Empty);
}
//要引发事件的派生来能够简单地重写OnTextChanged方法来捕捉事件
protected  virtual  void  OnTextChanged(EventArgs e)  
{
if  (TextChanged  !=  null)
TextChanged(this,e);
} protected override void AddAttributesToRender(HtmlTextWriter output)
{
base.AddAttributesToRender(output);
output.AddAttribute(HtmlTextWriterAttribute.Name,UniqueID);
output.AddAttribute(HtmlTextWriterAttribute.Type,"input"); if(this.Text!=null)
output.AddAttribute("value",this.Text);
}
}
}
继承了System.Web.UI.WebControls.WebControl类和System.Web.UI.IPostBackDataHandler接口,但是不能继承多个类,可以继承多个接口