ASP.NET控件开发学习笔记--第7回 从WebControl继承

 

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代码1FromControl.cs代码


using System.Web.UI;
[assembly:TagPrefix(
"MyControl""CG")]
namespace MyControl
{
    
public class FromControl:Control
    {
        
protected override void Render(HtmlTextWriter writer)
        {
            writer.WriteLine(
"我继承自Control");
        }
    }
}

 

再新建一文件“FromWebControl.cs”,输入如下代码:

7-1代码2FromWebControl.cs代码


using System;
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");
        }
    }
}

 

好分别从ControlWebControl继承作了两个控件,下面编译它们。新建一个Compile.bat文件,输入如下代码:

7-13Compile.bat代码

csc /t:library /out:H:\ASP\bin\FromControl.dll H:\ASP\FromControl.cs
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所示:


 

看看属性上的差别,你应该从视觉上了解它们之间的区别了吧!当然,差别远不止如此,现在比较忙,就讲这么一点,明天再讲。


posted @ 2008-03-01 10:38  abatei  阅读(930)  评论(0编辑  收藏  举报