1、 用户控件(user control)
2、 从Control、WebControl派生的自定义控件
3、 从已有的Asp.net服务器控件扩展
从Control、WebControl派生的自定义控件以编译过的类库形式部署的。
上述的1和3在本系列中将不做讲解,在本系列中只讲解从Control、WebControl派生的服务器控件。
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
public class Control1 : System.Web.UI.Control
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
writer.Write("I'm here.");
}
}
public class Control2 : System.Web.UI.WebControls.WebControl
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
writer.Write("I'm here too.");
}
}
}
上面的代码里我们定义了一个Contro1和Control2,他们分别从Control和WebControl继承下来,那他们之间到底有什么样的本质区别呢?先看下面的效果:
从上面的效果我们不难看出他们之间有什么区别,WebControl类通过属性提供了对样式的支持,比如字体、高度、背景色等等。那我们什么时候来选择从Control派生,什么时候又选择从WebControl派生呢?如果控件要生成非可视化的元素或显示给非HTML客户端,就从Control派生,如SqlDataSource;如果要提供客户端生成可视化的HTML,那我们就从WebControl派生,如TextBox。