ControlBuilderAttributeとは? わかりやすく解説

ControlBuilderAttribute クラス

ASP.NET パーサー内でカスタム コントロールを作成する ControlBuilder クラスを指定します。このクラスは継承できません。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

<AttributeUsageAttribute(AttributeTargets.Class)> _
Public NotInheritable Class
 ControlBuilderAttribute
    Inherits Attribute
Dim instance As ControlBuilderAttribute
[AttributeUsageAttribute(AttributeTargets.Class)] 
public sealed class ControlBuilderAttribute
 : Attribute
[AttributeUsageAttribute(AttributeTargets::Class)] 
public ref class ControlBuilderAttribute sealed
 : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Class) */ 
public final class ControlBuilderAttribute
 extends Attribute
AttributeUsageAttribute(AttributeTargets.Class) 
public final class ControlBuilderAttribute
 extends Attribute
解説解説

この属性は、次のコードに示すように、カスタム コントロールの作成に使用するビルダの Type を指定します。

[ControlBuilderAttribute(typeof(ControlBuilderType))]
使用例使用例

次のコード例では、実行時に定義された SelectedIndex 値と Message 値に基づいてメッセージを表示するために使用する、カスタマイズされた選択リストを作成します。実行可能ファイルの作成には、次のコマンド ラインを使用します。

vbc /r:System.dll /r:System.Web.dll /r:System.Drawing.dll /t:library /out:myWebAppPath/Bin/vb_MyControlBuilderAtt.dll
 ControlBuilderAtt.vb
csc /t:library /out:myWebAppPath/Bin/cs_MyControlBuilderAtt.dll ControlBuilderAtt.cs
'File name: controlBuilderAttribute.vb.

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Collections



Namespace CustomControls

Public Class MyVB_Item: Inherits
 Control
      
      Private _message As String
      
      Public Property Message() As
 String
         Get
            Return _message
         End Get
         Set
            _message = value
         End Set
      End Property
   End Class 'MyVB_Item
   
   Public Class VB_CustomParseControlBuilder:
 Inherits ControlBuilder

      <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,
 Name:="FullTrust")>  _
      Public Overrides Function
 GetChildControlType(TagName As String, attributes
 As IDictionary) As Type
          If (TagName = "customitem")
  Then
            Return GetType(CustomControls.MyVB_Item)
         End If
         Return Nothing
      End Function 'GetChildControlType
   End Class 'CustomParseControlBuilder
   
   <ControlBuilderAttribute(GetType(VB_CustomParseControlBuilder))>
  Public Class MyVB_CustomParse: Inherits
 Control
      
      Private _items As New
 ArrayList
      Private _selectedIndex As Integer
 = 0
      
      
      Public Property SelectedIndex() As
 Integer
         Get
            Return _selectedIndex
         End Get
         Set
            _selectedIndex = value
         End Set
      End Property
      
      <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,
 Name:="FullTrust")> _
      Protected Overrides Sub
 AddParsedSubObject(obj As Object)
         If TypeOf obj Is
 MyVB_Item Then
            _items.Add(obj)
         End If
      End Sub 'AddParsedSubObject
      
      <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand,
 Name:="FullTrust")> _
      Protected Overrides Sub
 Render(output As HtmlTextWriter)        
        output.Write(("<span style='background-color:aqua; color:red;
 font:8pt tahoma, verdana;'><b>" + CType(_items(SelectedIndex), MyVB_Item).Message
 + "</b></span>"))
      End Sub 'Render
   End Class 'MyVB_CustomParse
 
   
End Namespace 'CustomControls

/* File name: controlBuilderAttribute.cs. */

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;


namespace CustomControls

{
  public class MyCS_Item : Control 
  /* Class name: MyCS_Item. 
   * Defines the child control class.
   */
    {

      private String _message;

      public String Message 
      {
        get 
        {
          return _message;
        }
        set 
        {
           _message = value;
        }
     }
    }


    public class CustomParseControlBuilder
 : ControlBuilder 
    /* Class name: CustomParserControlBuilder.
     * Defines the functions and data to be used in building custom
 controls. 
     * This class is referenced using the ControlBuilderAttribute
 class. See class below.
     */
    {
      [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name="FullTrust")] 
      public override Type GetChildControlType(String tagName,
 IDictionary attributes) 
      {
        if (String.Compare(tagName, "customitem", true)
 == 0) 
        {
           return typeof(MyCS_Item);
        }
        return null;
      }
    }


    [ 
       ControlBuilderAttribute(typeof(CustomParseControlBuilder)) 
    ]
    public class MyCS_CustomParse : Control
 
    /* Class name: MyCS_CustomParse.
     * Performs custom parsing of a MyCS_CustomParse control type 
     * child control. 
     * If the child control is of the allowed type, it is added to an 
     * array list. This list is accessed, using the container
 control attribute 
     * SelectedIndex, to obtain the related child control Message attribute to be
 displayed.
     */
    {

       private ArrayList _items         = new
 ArrayList();
       private int       _selectedIndex = 0;

       public int SelectedIndex 
       { 
           get 
           {
              return _selectedIndex;
           }
           set 
           {
              _selectedIndex = value;
           }
       }

       [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name="FullTrust")] 
       protected override void AddParsedSubObject(Object
 obj) 
       /* Function name: AddParsedSubObject.
        * Updates the array list with the allowed child objects.
        * This function is called during the parsing of the child controls and 
        * after the GetChildControlType function defined in the
 associated control 
        * builder class.
        */
       {
          if (obj is MyCS_Item) 
         {
              _items.Add(obj);
           }
       }

       [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,
 Name="FullTrust")] 
       protected override void Render(HtmlTextWriter
 output) 
       /* Function name: Render.
        * Establishes the rules to render the built control. In this
 case, a message is
        * rendered that is a function of the parent control SelectedIndex attribute
 and 
        * the related child Message attribute.
        */
       {
          if (SelectedIndex < _items.Count) 
         {
              output.Write("<span style='background-color:aqua; color:red;
 font:8pt tahoma, verdana;'><b>" +
              ((MyCS_Item) _items[SelectedIndex]).Message + "</b></span>"
 );
         }
       }
    }    
}

package CustomControls;

/* File name: controlBuilderAttribute.jsl. */
import System.*;
import System.Web.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;
import System.Collections.*;

public class MyJSL_Item extends Control
{
    /* Class name: MyJSL_Item. 
       Defines the child control class.
     */
    private String _message;
    /** @property 
     */
    public String get_Message()
    {
        return _message;
    } //get_Message

    /** @property 
     */
    public void set_Message(String value)
    {
        _message = value;
    } //set_Message
} //MyJSL_Item

public class CustomParseControlBuilder extends
 ControlBuilder
{
    /* Class name: CustomParserControlBuilder.
       Defines the functions and data to be used in building custom
 controls. 
       This class is referenced using the ControlBuilderAttribute
 class.
       See class below.
     */
    public Type GetChildControlType(String tagName, IDictionary
 attributes)
    {
        if (String.Compare(tagName, "customitem", true)
 == 0) {
            return MyJSL_Item.class.ToType();
        }
        return null;
    } //GetChildControlType
} //CustomParseControlBuilder

/** @attribute ControlBuilderAttribute(CustomParseControlBuilder.class)
 */
public class MyJSL_CustomParse extends Control
{
    /* Class name: MyJSL_CustomParse.
       Performs custom parsing of a MyJSL_CustomParse control type 
       child control. 
       If the child control is of the allowed type, it is added to an 
       array list. This list is accessed, using the container
 control attribute 
       SelectedIndex, to obtain the related child control Message attribute
       to be displayed.
     */
    private ArrayList _items = new ArrayList();
    private int _selectedIndex = 0;

    /** @property 
     */
    public int get_SelectedIndex()
    {
        return _selectedIndex;
    } //get_SelectedIndex

    /** @property 
     */
    public void set_SelectedIndex(int
 value)
    {
        _selectedIndex = value;
    } //set_SelectedIndex

    protected void AddParsedSubObject(Object
 obj)
    {
        /* Function name: AddParsedSubObject.
           Updates the array list with the allowed child objects.
           This function is called during the parsing of the child controls and 
           after the GetChildControlType function defined in the
 associated control 
           builder class.
        */
        if (obj instanceof MyJSL_Item) {
            _items.Add(obj);
        }
    } //AddParsedSubObject

    protected void Render(HtmlTextWriter output)
    {
        /* Function name: Render.
           Establishes the rules to render the built control. In this
 case,
           a message is rendered that is a function of the parent control
           SelectedIndex attribute and the related child Message attribute.
        */
        if (get_SelectedIndex() < _items.get_Count()) {
            output.Write("<span style='background-color:aqua; color:red;"
                + " font:8pt tahoma, verdana;'><b>"
                + ((MyJSL_Item)_items.get_Item(get_SelectedIndex())).get_Message()
                + "</b></span>");
        }
    } //Render
} //MyJSL_CustomParse

上記で定義したカスタム コントロールを使用する例を次に示します。特に、この例では、実行時に表示するメッセージを決定する SelectedIndex 値と Message 値が代入されています。Register ディレクティブに示される値には、前のコマンド ラインが反映されます。

<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt"
 Namespace="CustomControls" %>
 <h4>Using ControlBuilderAttribute Class<h4>
 <form runat="server">
  <custom:MyVB_CustomParse SelectedIndex="3" runat=server>
  <customitem Message="Visual Basic version. Item One selected"/>
  <customitem Message="Visual Basic version. Item Two selected"/>
  <customitem Message="Visual Basic version. Item Three selected"/>
  <customitem Message="Visual Basic version. Item Four selected"/>
  </custom:MyVB_CustomParse>
 </form>
<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt"
 Namespace="CustomControls" %>
 <h4>Using ControlBuilderAttribute Class<h4>
 <form runat="server">
  <custom:MyCS_CustomParse SelectedIndex="2" runat=server>
  <customitem Message="C# version. Item One selected"/>
  <customitem Message="C# version. Item Two selected"/>
  <customitem Message="C# version. Item Three selected"/>
  <customitem Message="C# version. Item Four selected"/>
  </custom:MyCS_CustomParse>
 </form>
継承階層継承階層
System.Object
   System.Attribute
    System.Web.UI.ControlBuilderAttribute
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ControlBuilderAttribute コンストラクタ

カスタム コントロールのコントロール ビルダを指定します。

名前空間: System.Web.UI
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Sub New ( _
    builderType As Type _
)
Dim builderType As Type

Dim instance As New ControlBuilderAttribute(builderType)
public ControlBuilderAttribute (
    Type builderType
)
public:
ControlBuilderAttribute (
    Type^ builderType
)
public ControlBuilderAttribute (
    Type builderType
)
public function ControlBuilderAttribute (
    builderType : Type
)

パラメータ

builderType

コントロール ビルダの型。

解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ControlBuilderAttribute クラス
ControlBuilderAttribute メンバ
System.Web.UI 名前空間

ControlBuilderAttribute フィールド


パブリック フィールドパブリック フィールド

参照参照

関連項目

ControlBuilderAttribute クラス
System.Web.UI 名前空間
Attribute

その他の技術情報

ASP.NET コントロール デザイナの概要

ControlBuilderAttribute プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ BuilderType 属性に関連付けられたコントロールの Type を取得します。このプロパティは読み取り専用です。
パブリック プロパティ TypeId  派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。 ( Attribute から継承されます。)
参照参照

関連項目

ControlBuilderAttribute クラス
System.Web.UI 名前空間
Attribute

その他の技術情報

ASP.NET コントロール デザイナの概要

ControlBuilderAttribute メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Equals オーバーロードされます。 オーバーライドされます。  
パブリック メソッド GetCustomAttribute  オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 ( Attribute から継承されます。)
パブリック メソッド GetCustomAttributes  オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 ( Attribute から継承されます。)
パブリック メソッド GetHashCode オーバーライドされます。 ControlBuilderAttribute オブジェクトのハッシュ コードを返します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド IsDefaultAttribute オーバーライドされます。 現在のコントロール ビルダが既定値かどうかを確認します。
パブリック メソッド IsDefined  オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 ( Attribute から継承されます。)
パブリック メソッド Match  派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 ( Attribute から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ControlBuilderAttribute クラス
System.Web.UI 名前空間
Attribute

その他の技術情報

ASP.NET コントロール デザイナの概要

ControlBuilderAttribute メンバ

ASP.NET パーサー内でカスタム コントロールを作成する ControlBuilder クラスを指定します。このクラスは継承できません。

ControlBuilderAttribute データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
パブリック フィールドパブリック フィールド
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ BuilderType 属性に関連付けられたコントロールの Type を取得します。このプロパティは読み取り専用です。
パブリック プロパティ TypeId  派生クラスに実装されている場合は、この Attribute の一意の識別子を取得します。(Attribute から継承されます。)
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Equals オーバーロードされます。 オーバーライドされます。  
パブリック メソッド GetCustomAttribute  オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用された指定した型のカスタム属性を取得します。 (Attribute から継承されます。)
パブリック メソッド GetCustomAttributes  オーバーロードされます。 アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されたカスタム属性の配列を取得します。 (Attribute から継承されます。)
パブリック メソッド GetHashCode オーバーライドされます。 ControlBuilderAttribute オブジェクトのハッシュ コードを返します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド IsDefaultAttribute オーバーライドされます。 現在のコントロール ビルダが既定値かどうかを確認します。
パブリック メソッド IsDefined  オーバーロードされます。 指定した型のカスタム属性が、アセンブリ、モジュール、型のメンバ、またはメソッド パラメータに適用されているかどうかを判断します。 (Attribute から継承されます。)
パブリック メソッド Match  派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (Attribute から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ControlBuilderAttribute クラス
System.Web.UI 名前空間
Attribute

その他の技術情報

ASP.NET コントロール デザイナの概要



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ControlBuilderAttribute」の関連用語

ControlBuilderAttributeのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ControlBuilderAttributeのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS