複合コントロールの開発
クラス コンポジションを使用して、既存の複数のコントロールを組み合わせて新しいコントロールを作成できます。複合コントロールは、既存のコントロールの機能を再利用するユーザー インターフェイスをレンダリングします。複合コントロールは、子コントロールのプロパティから合成したプロパティを使用し、それらの子コントロールが発生させたイベントを処理できます。また、カスタムのプロパティやイベントも公開できます。
複合コントロールには、次の処理が必要です。
- Control から継承した保護されている CreateChildControls メソッドをオーバーライドして、子コントロールのインスタンスを作成し、これらのインスタンスを Controls コレクションに追加します。
- System.Web.UI.INamingContainer インターフェイスを実装します。INamingContainer は、メソッドのないマーカー インターフェイスです。コントロールが INamingContainer を実装すると、ASP.NET ページ フレームワークによって、このコントロールの下に新しい名前付けスコープが作成されます。これにより、コントロールの階層ツリー内で子コントロールに一意の名前が付けられます。この処理は、複合コントロールがテンプレート プロパティを公開する場合、データ連結を提供する場合、子コントロールにイベントをルーティングする必要がある場合に、特に重要です。
子コントロールがレンダリング ロジックを提供しているため、Render メソッドをオーバーライドする必要はありません。子コントロールからのイベントをコンテナまでバブルし、コンテナの最上位レベルのイベントとして公開できます。詳細については、「イベントのバブル」および「イベント バブル コントロールのサンプル」を参照してください。
複合コントロールのサンプルについては、「複合サーバー コントロールのサンプル」を参照してください。
複合コントロールは、宣言によって作成されたユーザー コントロールとほぼ同じです。ただし、複合コントロールとユーザー コントロールでは、デザイン時の動作と永続化の形式が大きく異なります。これらの相違点については、「複合コントロールとユーザー コントロール」を参照してください。
コントロールのパフォーマンスを最適化する場合は、コンポジションの代わりにレンダリングを直接使用できます。詳細については、「コンポジションとレンダリング」を参照してください。
参照
複合サーバー コントロールのサンプル | 複合コントロールとユーザー コントロール | コンポジションとレンダリング | イベントのバブル | イベント バブル コントロールのサンプル