.net控件开发之复合控件:概念基础篇
CompositeControl类是一个抽象类,为自定义控件提供命名容器和控件设计器功能,该自定义包含全部子控件或使用其他控件功能。
此类实现了INamingContainer接口,该接口没有任何方法,为什么要继承此接口呢?
答案是:它会使页面在控件下创建一个新的命保范围,当实现该接口时,控件包含的任何子控件的表示符,保证页面中确定是唯一的。例如,如果页面上有两个gridview控件,第一个gridview的子控件和第二个gridview子控件会有不同的唯一标表示符。
事例:就如我们团队有一个团队号(001)[复合控件ID],个人标识(suiqi)[指子控件ID],当我们在团队的标识通常为001-suiqi
开发复合控件不得不去说说两个方法,一个是CreateChildControls方法,一个是EnsureChildControls方法。
先说一下CreateChildControls方法:CreateChildControls方法来对子控件进行实例化、初始化、并把这些子控件添加到控件树中.
但一定不能在构造器或OnInit方法中执行该逻辑. 必须在CreateChildControls方法中创建子控件,而不是在诸如实例化或初始化这样的特定阶段创建,这样可以在控件生命周期中任何需要的时候来创建子控件.当创建一个复合控件且由其子控件来处理回传数据时,这样做特别重要.
再详解一下EnsureChildControls方法。该方法为了确保子控件在代码访问它们之前创建好了,该方法来创建军子控件,控件实现中的任何需要访问子控件代码必须先调用EnsureChildControls方法,例如,页面用来定位子控件的FindControl方法的默认实现,就先调用了EnsureChildControls方法.注意,如果子控件没有在控件生命周期中的预先成阶段之前被创建,那么它们会在这个时候根据要求创建.这是因为在PreRender方法的默认实现中调用了所有其Visible属性值为true的控件的EnsureChildcontrols方法。
我们知道它的作用,但还要了解为什么,什么时候调用EnsureChildControls的。
什么时候被调用:在PreRender过程中页面会自动调用EnsureChildControls,这个方法就会自动调用CreateChildControls方法重新建立控件内容。
0
相关文章
- 微软用 AI 挖出 GRUB2、U-boot、Barebox 等引导程序漏洞李雪薇 · 2025-04-07
- 微软365环境被利用在商业电子邮件攻击中李雪薇 · 2025-03-18
- 微软CEO称AI系统存在"过度建设",AGI不过是"无意义的基准测试游戏"姜惠田 · 2025-02-21
- 搭载英特尔酷睿处理器,微软推出全新Windows 11 AI+ PC,Surface商用版姜惠田 · 2025-02-18
- 微软起诉海外威胁行为组织滥用OpenAI服务李雪薇 · 2025-01-16
- 网络安全警报!微软修复161个漏洞,警惕零日攻击李雪薇 · 2025-01-15
- 微软代码埋雷,Linux内核6.13险翻车,英特尔和AMD紧急救场陶然 · 2025-01-14
- 重启解决99%%故障?微软全球瘫痪11小时,无奈手动重启服务器救急!卢敏 · 2024-11-26
- 微软应用商店引入腾讯应用宝专区,拓展 Windows 应用生态姜惠田 · 2024-11-13
- 微软翻车:Windows Server 2022自动升级至2025,运维天塌了!陶然 · 2024-11-08