首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我们不调用base.createchildcontrols()会发生什么?

如果我们不调用base.createchildcontrols()会发生什么?
EN

Stack Overflow用户
提问于 2011-12-06 06:59:05
回答 1查看 897关注 0票数 1

我只想知道如果我们不在代码中放入base.createchildcontrols()会发生什么。是否在不调用base.createchildcontrols()的情况下创建复合控件?

代码语言:javascript
复制
 [ToolboxData("<{0}:Login runat=server></{0}:Login>")]
public class Login : CompositeControl
{
 private TextBox txtUsername = new TextBox();
private TextBox txtPassword = new TextBox();
private Button btnLogin = new Button();

protected override void CreateChildControls()
{
txtUsername.ID = "txtUsername";
txtPassword.ID = "txtPassword";
txtPassword.TextMode = TextBoxMode.Password;
btnLogin.ID = "btnLogin";
btnLogin.Text = "Login";

Controls.Add(txtUsername);
Controls.Add(txtPassword);
Controls.Add(btnLogin);

base.CreateChildControls();
 }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-06 07:18:10

简短的回答是...没什么!您不需要调用基本实现(尽管您可以始终尝试删除它以查看发生了什么;-)

使用ILSpy,我们可以看到CompositeControl继承了WebControl,后者继承了Control。

CreateChildControl()在控件上定义为:

代码语言:javascript
复制
protected internal virtual void CreateChildControls()
{
}

也就是说,它只在那里被重写。

将它与其他一些继承自控件的控件进行比较,如BaseDataList,您可以看到该方法具有许多用于检查和呈现输出的功能。

这是有道理的。阅读MSDN文档here,我们可以看到它是由您实现任何子控件的呈现。只有当你继承的类需要调用这个方法时,你才需要调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8393118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档