如何在设计时公开复合控件内的子控件
生活随笔
收集整理的這篇文章主要介紹了
如何在设计时公开复合控件内的子控件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用UserControl制作一個復合控件,有時內部一個子控件很多屬性、方法和事件都要和外部交互,如果要在UserControl重新公開這些接口將是一個工作量很大的事情,我們可以考慮直接向外公開這個子控件,就是在UserControl提供一個公有的屬性可以直接訪問到這個子控件,如果我們要做到設計時的控制,(就像Panel內的控件可以直接拖放的效果一樣),我們就得使用自己的設計器Designer。通過Designer定制屬性加載自己的設計器。
如:
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;?}
????????}
……
?
???? 如果單單想公開一個或多個子控件,自己的設計器可以從ControlDesigner派生;在公司子控件的同時又想把這個UserControl作為一個容器,可以從ParentControlDesigner派生。
通過重寫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");
????????}
????}
???
轉載于:https://www.cnblogs.com/Yjianyong/archive/2009/08/06/1540676.html
總結
以上是生活随笔為你收集整理的如何在设计时公开复合控件内的子控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: __uuidof
- 下一篇: WCF 第二章 契约 单向操作