次の方法で共有


ユーザー コントロール インスタンスのプログラムによる作成

Web フォーム ページ上の ASP.NET サーバーのインスタンスをプログラムによって作成できるのと同様に、ユーザー コントロールについても、コントロールを含むページの LoadControl メソッドを使用すると同じことができます。ただし、まず @ Control ディレクティブの className 属性を使用することで、厳密な型をユーザー コントロールに関連付ける必要があります。この手順が必要なのは、LoadControl メソッドから返されるのが Control クラスの型であり、ユーザー コントロールを適切な厳密型にキャストすることでコントロールに関する個別のプロパティを設定できるようにする必要があるからです。

className 属性を使用して、ファイル MyUserControl.ascx 内に保存されたユーザー コントロールに厳密な型を指定する例を次に示します。

<%@ Control className="MyUserControl" %>

ユーザー コントロールのインスタンスをプログラムによって作成するには

  1. ユーザー コントロールを含む Web フォーム ページの先頭部分で、@ Reference ディレクティブを使用してコントロールを登録します。ユーザー コントロールをプログラムによって作成する場合、Web フォーム ページでそのコントロールの厳密型を利用できるのは、そのコントロールへの参照を作成した後だけです。たとえば、MyUserControl.ascx ファイル内で作成されたユーザー コントロールへの参照を作成するコードを次に示します。

    <%@ Reference Control="MyUserControl.ascx" %>
    

    メモ   Web フォーム ページの中でユーザー コントロールのインスタンスを宣言によって作成する場合は、@ Register ディレクティブを使用します。

  2. 分離コード クラス ファイル、またはコントロールを含む .aspx ファイルのコード宣言ブロックの中で、ユーザー コントロールのインスタンスを作成します。必要に応じてプロパティの値を代入し、Add メソッドを使用して、コントロールを含むページの ControlCollection オブジェクトにコントロールを追加します。このコントロールは、ページが継承した Control.Controls プロパティで利用できます。BackColor プロパティの値を beige に設定して、MyUserControl.ascx のインスタンスを作成する例を次に示します。

    Dim c1 As UserControl = LoadControl("MyUserControl.ascx")
    CType(c1, MyUserControl).BackColor = "beige"
    Page.Controls.Add(c1)
    [C#]
    Control c1 = LoadControl("MyUserControl.ascx");
    ((MyUserControl)c1).BackColor = "beige";
    Page.Controls.Add(c1);
    

    メモ   Add メソッドを使用してコントロールを ControlCollection オブジェクトに追加する場合、それらのコントロールは処理された順序でコレクション内に配置されます。コレクション内の特定の位置にコントロールを追加する場合は、AddAt メソッドを使用し、コントロールの格納場所とするインデックスの位置を指定します。

参照

Web フォーム ユーザー コントロール | ユーザー コントロールの作成 | Web フォーム ページへのユーザー コントロールの取り込み | Windows フォーム ページのサーバー イベント処理 | ユーザー コントロール イベントの処理