如何在设计时公开复合控件内的子控件
生活随笔
收集整理的這篇文章主要介紹了
如何在设计时公开复合控件内的子控件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用UserControl制作一個(gè)復(fù)合控件,有時(shí)內(nèi)部一個(gè)子控件很多屬性、方法和事件都要和外部交互,如果要在UserControl重新公開這些接口將是一個(gè)工作量很大的事情,我們可以考慮直接向外公開這個(gè)子控件,就是在UserControl提供一個(gè)公有的屬性可以直接訪問到這個(gè)子控件,如果我們要做到設(shè)計(jì)時(shí)的控制,(就像Panel內(nèi)的控件可以直接拖放的效果一樣),我們就得使用自己的設(shè)計(jì)器Designer。通過(guò)Designer定制屬性加載自己的設(shè)計(jì)器。
如:
Code
[Designer(typeof(LawCaseDesigner))]
[DesignTimeVisible(true)]
[DefaultEvent("SearchLawCase")]
public?partial?class?CtrlLawCaseSearch?:?UserControl
{
????????///?<summary>
????????///?搜索按鍵
????????///?</summary>
????????[Browsable(false)]
????????[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
????????public?XPButton?BtnSearch
????????{
????????????get?{?return?this.btnSearch;?}
????????}
……
?
???? 如果單單想公開一個(gè)或多個(gè)子控件,自己的設(shè)計(jì)器可以從ControlDesigner派生;在公司子控件的同時(shí)又想把這個(gè)UserControl作為一個(gè)容器,可以從ParentControlDesigner派生。
通過(guò)重寫Initialize()方法,使用EnableDesignMode方法公開子控件。
示例:
LawCaseDesigner
???internal?class?LawCaseDesigner?:?ParentControlDesigner
????{
????????private?CtrlLawCaseSearch?MyControl;
????????public?override?void?Initialize(IComponent?component)
????????{
????????????base.Initialize(component);
???????????//?Record?instance?of?control?we're?designing
????????????MyControl?=?(CtrlLawCaseSearch)component;
????????????this.EnableDesignMode(MyControl.BtnSearch,?"btnSearch");
????????????//this.EnableDesignMode(MyControl.BtnTest,?"BtnTest");
????????}
????}
???
轉(zhuǎn)載于:https://www.cnblogs.com/Yjianyong/archive/2009/08/06/1540676.html
總結(jié)
以上是生活随笔為你收集整理的如何在设计时公开复合控件内的子控件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: __uuidof
- 下一篇: WCF 第二章 契约 单向操作