このトピックでは、ASP.NET サーバー コントロールの開発に関係するさまざまなプログラミング要素について、基本的な概要を説明します。ここでの説明は、一般的なプログラミングの解説です。詳細については、このセクションのほかの箇所で説明します。「共通言語仕様の概要」で説明するように、共通言語仕様 (CLS: Common Language Specification) に準拠した言語であれば任意のプログラミング言語でコントロールを作成できます。
ASP.NET サーバー コントロールは、System.Web.UI.Control から直接または間接的に派生するクラスです。ASP.NET サーバー コントロールの基本クラスは、次の 2 つのクラスです。
-
Control クラスは、すべての ASP.NET サーバー コントロールに共通のプロパティ、メソッド、およびイベントを定義します。この中には、コントロール実行の有効期間を管理するメソッドやイベントのほか、ID、UniqueID、Parent、ViewState、Controls (子コントロールのコレクション) などのプロパティが含まれます。Control には、ユーザー インターフェイス (UI) 固有の機能はありません。UI を提供しないコントロールを作成する場合、または独自の UI を表示する別のコントロールを結合するコントロールを作成する場合は、Control から派生させてください。
System.Web.UI.WebControls.WebControl
WebControl クラスは、Control の派生クラスであり、UI 機能に対して追加のプロパティおよびメソッドを提供します。これらのプロパティには、ForeColor、BackColor、Font、BorderStyle、Height、および Width が含まれます。WebControl は、ASP.NET の Web サーバー コントロール ファミリの基本クラスです。コントロールで UI を表示する場合は、WebControl から派生させてください。
コントロールの機能によっては、次のインターフェイスの 1 つ以上を実装する必要があります。
System.Web.UI.INamingContainer
INamingContainer は、メソッドを持たないマーカー (空の) インターフェイスです。このインターフェイスがコントロールによって実装されると、ASP.NET ページ フレームワークは、そのコントロールに基づいて新しい名前付けスコープを作成します。これにより、コントロールの階層ツリー内で固有の ID を子コントロールに割り当てることができます。データ連結を提供する (子コントロールが含まれている) 複合コントロール、template 宣言されたコントロール、またはイベントを子コントロールにルーティングする必要があるコントロールの場合は、INamingContainer インターフェイスを実装する必要があります。たとえば、Repeater コントロールや、その他のデータ連結コントロールの場合です。詳細については、「複合コントロールの開発」を参照してください。
System.Web.UI.IPostBackDataHandler
コントロールでポストバック データを調べてその状態を更新したり、データが変更されたときにサーバー上でイベントを発生させたりする必要がある場合は、IPostBackDataHandler インターフェイスを実装する必要があります。たとえば、TextBox コントロールの場合、このコントロールは、テキストのポストされた値をチェックして Text プロパティを更新し、テキストが変更されたときに TextChanged イベントを発生させます。詳細については、「ポストバック データの処理」を参照してください。
System.Web.UI.IPostBackEventHandler
コントロールで、クライアント側ポストバック イベントをキャプチャし、そのイベントを処理して応答するか、またはサーバー上でイベントを発生させて応答する場合は、IPostBackEventHandler インターフェイスを実装する必要があります。たとえば、Button コントロールの場合、このコントロールはフォームの送信をキャプチャし、サーバー上で Click イベントを発生させます。詳細については、「ポストバック イベントのキャプチャ」を参照してください。
基本クラスから継承したプロパティ、メソッド、およびイベントをオーバーライドしたり、カスタム コントロールに新しいプロパティ、メソッド、およびイベントを追加したりできます。詳細については、「ASP.NET サーバー コントロールのプロパティ」、「ASP.NET サーバー コントロールのメソッド」、および「ASP.NET サーバー コントロールのイベント」を参照してください。
「サーバー コントロールにおけるスタイル」で説明するように、ASP.NET では、コントロールからスタイルにアクセスしたり、スタイルを公開したりできます。ページ開発者がインライン テンプレートを使用してユーザー インターフェイスをカスタマイズできるように、ASP.NET サーバー コントロールをプログラムできます。詳細については、「テンプレート コントロールの開発」を参照してください。
データに連結された複合プロパティを持つデータ連結コントロールを開発する場合は、「template 宣言のあるデータ連結コントロールの開発」を参照してください。
単純カスタム コントロールを作成する手順については、「単純 ASP.NET サーバー コントロールの開発」を参照してください。