第7回 从WebControl继承
终于看到了《Professional ASP.NET 2.0 Server Control and Component Development》这本书的第三章,第二章有一部分我没讲,就是用户控件(ascx控件),被省略掉了,现在先关注定制控件。这本书的第三章讲的是定制样式,居然对WebControl的部分源码进行分析,很强悍啊!而且讲得很细致,建议大家买这本书。由于看英文没有看中文这么容易入脑,看第一遍只看了个大概,似懂非懂,再看第二遍就清晰得多了。我们还是从WebControl讲起吧。
WebControl是什么?有什么作用?它存在于命名空产间System.Web.UI.WebControls之中,它从Control继承而来。它和Control类一样,也是一个用于编写控件的基础类。两者有什么不同呢?我们用最直观的方式来展现两者的不同之处。新建一文件“FromControl.cs”,输入如下代码:
例7-1代码1:FromControl.cs代码
[assembly:TagPrefix("MyControl", "CG")]
namespace MyControl
{
public class FromControl:Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.WriteLine("我继承自Control");
}
}
}
再新建一文件“FromWebControl.cs”,输入如下代码:
例7-1代码2:FromWebControl.cs代码
using System.Web.UI;
using System.Web.UI.WebControls;
[assembly:TagPrefix("MyControl", "CG")]
namespace MyControl
{
public class FromWebControl:WebControl
{
protected override void Render(HtmlTextWriter writer)
{
writer.WriteLine("我继承自WebControl");
}
}
}
好分别从Control和WebControl继承作了两个控件,下面编译它们。新建一个Compile.bat文件,输入如下代码:
例7-1代码3:Compile.bat代码
csc /t:library /out:H:\ASP\bin\FromWebControl.dll H:\ASP\FromWebControl.cs
pause
记住,路径不要抄我的,根据你的实际情况来。双击Compile.bat批处理在bin文件夹下生成两个DLL。然后在Visual Studio中新建一个ASP.NET Web应用程序。并把这两个控件添加到工具栏中(前面讲过这如何把控件弄进VS了,这里不再啰嗦)。好,把两个控件都放到设计窗体中,然后分别选中这两个控件,然后观察属性窗口,如图7-1所示:
看看属性上的差别,你应该从视觉上了解它们之间的区别了吧!当然,差别远不止如此,现在比较忙,就讲这么一点,明天再讲。