您的位置:首页 > 编程语言 > ASP

asp.net控件开发基础(15)

2006-12-30 15:06 459 查看
Hello,朋友们,新年快乐.很长时间没写博客了,一直在想写这一篇,可没想好怎么写,就一直放着.现在终于有时间了,那么来继续我们的话题吧.自定义控件.如果你还不熟悉自定义控件开发的话,还请看看我以前写了几篇,希望对你有帮助
1.1何处继承
自定义控件一般从以下几个基类(此处不包含数据控件)
一.Control类
(所有服务器控件的基类,算是比较底层的类,如果控件功能比较简单,要求不多,可直接继承此类.)
二.WebControl类(标准控件的基类,继承此类,你可以继承其丰富的公共属性,若标准控件中的控件没有你需要的控件,你可以继承此类)
三.CompositeControl 类(2.0新增的类,此类继承自WebControl类,如果你需要制作复合控件,请从继承此类开始)
四.直接从内置控件继承(我们知道轮子只需要发明一遍,你的需求跟内置差不多的话,请考虑这么做)

1.2呈现控件

Control类Render方法为基本呈现方法,RenderContent方法是在Render方法之上的,其为控件加了一个标签,我认为RenderContent方法是为WebControl类中属性准备的.基本的方法继续深刻的去了解.

1.3与用户交互

纯粹的呈现控件还不够,我们需要传递数据,这就必然让我们了解自定义控件事件处理

1.4接触属性(见第五,九,十篇)

属性相对而言比较简单,也比较好理解,但其又比较麻烦.
当控件属性太多,很容易乱,因此我们又认识了元数据,
把属性进行了分类,如下图
namespace AspDemo.CustomComponents
[assembly: WebResource("AspDemo.CustomComponents.Resources.AspDemo.CustomComponents.ResourceLabel.image1.jpg", "image/jpeg")]
[assembly: WebResource("AspDemo.CustomComponents.Resources.AspDemo.CustomComponents.ResourceLabel.help.htm", "text/html", PerformSubstitution = true)]
namespace AspDemo.CustomComponents
protected override void OnInit(EventArgs e)

protected override object SaveControlState()

protected override void LoadControlState(object state)
<pages>
<controls>

<add tagPrefix="aspDemo" namespace="AspDemo.CustomComponents" assembly="AspDemo.CustomComponents"/>
</controls>

</pages>

(2)控件映射

url可以映射,控件也可以,我们在配置Ajax环境的时候就用到了此方法

<pages>
<tagMapping>
<add tagType="System.Web.UI.WebControls.RequiredFieldValidator" mappedTagType="System.Web.UI.Compatibility.RequiredFieldValidator, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</pages>

五.在工具栏上隐藏控件

再讲一个小东西,当定义的控件,不需要在工具栏上显示的话,可以用此元数据把控件隐藏起来

[ToolboxItem(false)]
public class ImageControl : WebControl
{
}

好了,写完这一篇了,如哪里有错误还请大家指出,以上全凭经验写的

以下提供所有例子的代码,希望对大家有用

示例代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: