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

《ASP.NET2.0揭秘》读书笔记——构建组合控件

2009-05-25 10:43 232 查看
构建组合控件,顾名思义就是利用已有的控件来重新组合成新的控件。

所有的ASP.NET 控件都有Controls属性来表示它的所有子控件。构建组合控件从CompositeControl类派生,一般会重写CreateChildControls()方法。

下面示例代码演示了组合一个TextBox控件和RequiredFieldValidator控件。

Code

1 using System;

2 using System.Web.UI.WebControls;

3

4 namespace myControls

5 {

6 public class RequiredTextBox : CompositeControl

7 {

8 private TextBox input;

9 private RequiredFieldValidator validator;

10

11 public string Text

12 {

13 get

14 {

15 EnsureChildControls();

16 return input.Text;

17 }

18 set

19 {

20 EnsureChildControls();

21 input.Text = value;

22 }

23 }

24

25 protected override void CreateChildControls()

26 {

27 input = new TextBox();

28 input.ID = "input";

29 this.Controls.Add(input);

30

31 validator = new RequiredFieldValidator();

32 validator.ID = "valInput";

33 validator.ControlToValidate = input.ID;

34 validator.ErrorMessage = "(Required)";

35 validator.Display = ValidatorDisplay.Dynamic;

36 this.Controls.Add(validator);

37 }

38 }

39 }

里面没有重写基类的RenderContens方法而是重写了CreateChildControls方法,注意在Text属性的Get和Set方法都调用了EnsureChildControls()方法,该方法是确保能CreateChildControls()方法,但不会重复调用。因为没有调用CreateChildControls()方法就使用input.Text的话就会造成空引用的异常。必须先创建了子控件才能访问子控件的任何属性,这是毫无疑问的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: