快速业务通道

ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三 个基类:Control,WebControl,还有一个就是今天要说的CompositeControl。

大家也许还记得,之前的开发的控件基本上都是我们自己从头到尾的写一些控件的标记,如 <table.....>之类的,而且还有一个大的问题:我们为了使得我们的控件更加的好用,专业,我们 还实现了大量的接口,和自己写很多的事件.这样开发控件的时间就加大了。其实我们可以利用ASP.NET中 已经有的控件,经过我们包装,实现我们自定义控件。大家可能认为这和用户控件差不多的,但是继承 CompositeConytol的控件的自定义控件的灵活性和复用行更好,而且还还添加样式。

还一个更加重要的就是我们不必要实现接口,比如,引发回传的IPostBackEventHandler接口,接受数 据的IPostBackDataHandler接口。大家还记得我们之前开发控件中的的那个Button还要申明name为 this.UniqueID ,现在我们都不需要了,因为我们要包装的那些服务器的控件,如TextBox,他们都已经 实现了这些。

本章准备开发一个大家都熟知的Login登录控件。

大家先看看效果:

ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

其实分析起来,这个控件是由一些已有的控件组合而成的,分别是:

两个Label,两个TextBox,和一个Button

下面我们就来开发:

首先,还是先继承CompositeControl;

1 public class Login:CompositeControl

然后把就申明我们要组合的控件,如上所说的:

1  #region 要组合的控件
2 Label lbUserName;
3 Label lbUserPassward;
4 TextBox txtUserName;
5 TextBox txtUserPassward;
6 Button submitButton;
7 #endregion

把控件申明了之后只要初始化,并且将这些控件整合成我们的Login 控件就可以了。这么做呢?

其实开发组合控件很简单,一般只要重写一个方法就可以了。这个方法就是来初始化并且整合那些已 经申明了的小控件的。如下:

1   #region 重写方法CreateChildControls
 2
 3         protected override void CreateChildControls()
 4         {
 5             //清空控件,大家可以理解为:初始化一张白纸,好让我们来画画
 6
 7             Controls.Clear();
 8
 9            //初始化控件lbUserName
10             lbUserName = new Label();
11             lbUserName.Text = "用户名:";
12             lbUserName.ID = "lbUserName";
13             //把控件添加到我们的组合控件中
14             Controls.Add(lbUserName);
15
16             //初始化控件lbUserPassward
17             lbUserPassward = new Label();
18             lbUserPassward.Text = "密  码:";
19             lbUserPassward.ID = "lbUserPassward";
20             Controls.Add(lbUserPassward);
21
22               //初始化控件txtUserName
23
24             txtUserName = new TextBox();
25             txtUserName.ID = "txtUserName";
26             txtUserName.Width = Unit.Percentage(60);
27             Controls.Add(txtUserName);
28
29             //初始化控件txtUserPassward
30             txtUserPassward = new TextBox();
31             txtUserPassward.ID = "txtUserPassward";
32             txtUserPassward.Width = Unit.Percentage(60);
33             Controls.Add(txtUserPassward);
34
35             //初始化控件 submitButton
36             submitButton  = new Button();
37             submitButton.Text = "提交";
38             submit

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号