使用するユーザーコントロールをしたい場合は、しなければならない子コントロールの内部で時々 、複合コントロールを作るために多くのプロパティ、メソッド、イベントや外部の相互作用を、ユーザーコントロールが再オープンするには、これらのインタフェースは、我々は、この対外直接公衆を考慮することができるものの重い作業負荷になります子コントロールは、であるユーザーコントロール私たちはデザインの制御、(のように達成する必要がある場合は、子コントロールに直接アクセスするためのパブリックプロパティを提供し、パネルの効果のコントロールが同じ以内にドラッグ&ドロップすることができますが)、私たちは自分自身を使用する必要がありますデザイナーのデザイナー。デザイナー独自のデザイナーのカスタム属性をロードします。
以下のような:
コード
[デザイナー(typeof演算(LawCaseDesigner))]
[DesignTimeVisible(真)]
[DefaultEvent(" SearchLawCase " )]
パブリックパーシャルクラス CtrlLawCaseSearch:ユーザーコントロール{ /// <要約> /// 搜索按键/// </要約> [閲覧(偽)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] パブリック XPButton BtnSearch { 取得 { 戻り、この.btnSearchと、} } ......
[デザイナー(typeof演算(LawCaseDesigner))]
[DesignTimeVisible(真)]
[DefaultEvent(" SearchLawCase " )]
パブリックパーシャルクラス CtrlLawCaseSearch:ユーザーコントロール{ /// <要約> /// 搜索按键/// </要約> [閲覧(偽)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] パブリック XPButton BtnSearch { 取得 { 戻り、この.btnSearchと、} } ......
あなたが唯一の1つ以上の子コントロールを開きたい場合は、その設計からすることができ ControlDesigner 導き出す。同時に、同社はこの子が制御したかったのUserControlをから、コンテナとして ParentControlDesignerが派生しました。
オーバーライドによって初期化()EnableDesignMode子コントロールを開示された方法を使用して、方法。
例:
LawCaseDesigner
内部クラス LawCaseDesigner:ParentControlDesigner { プライベート CtrlLawCaseSearch MyControlと。公共オーバーライドボイド 初期(IComponent成分) { 塩基.Initialize(成分)// 私たちが設計しているコントロールの録音インスタンス MyControlと = (CtrlLawCaseSearch)コンポーネントを。この.EnableDesignMode(MyControl.BtnSearch、 " btnSearch " ); // this.EnableDesignMode(MyControl.BtnTest、 "btnTestを"); } }
ます。https://www.cnblogs.com/Yjianyong/archive/2009/08/06/1540676.htmlで再現