ControlBuilderAttribute クラス

定義

ASP.NET パーサー内でカスタム コントロールを作成する ControlBuilder クラスを指定します。Specifies a ControlBuilder class for building a custom control within the ASP.NET parser. このクラスは継承できません。This class cannot be inherited.

public ref class ControlBuilderAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class ControlBuilderAttribute : Attribute
type ControlBuilderAttribute = class
    inherit Attribute
Public NotInheritable Class ControlBuilderAttribute
Inherits Attribute
継承
ControlBuilderAttribute
属性

次のコード例では、 SelectedIndex Messageおよび実行時に定義された値に基づいてメッセージを表示するために使用する、カスタマイズされた選択リストを作成します。The following code example creates a customized selection list that is used to display a message based on the SelectedIndex and the Message values defined at run time. 実行可能ファイルをビルドするには、次のコマンドラインを使用します。The following command line is used to build the executable.

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.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>" );
         }
       }
    }    
}


'File name: controlBuilderAttribute.vb.

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
   
   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
   
   <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
      
      <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
   End Class
   
End Namespace 'CustomControls

次の例では、上で定義したカスタムコントロールを使用します。The following example uses the custom control defined above. 具体的には、実行時SelectedIndexMessageとの値を割り当てて、表示するメッセージを決定します。In particular, it assigns the SelectedIndex and Message values at run time to determine the message to be rendered. Registerディレクティブに示されている値に、前のコマンドラインが反映されていることに注意してください。Notice that the values shown in the Register directive reflect the previous command line.

<%@ 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>  

注釈

この属性は、次Typeのコードに示すように、カスタムコントロールを作成するために使用するビルダーを指定します。This attribute specifies the builder Type to be used to create a custom control as shown in the following code:

[ControlBuilderAttribute(typeof(ControlBuilderType))]  

コンストラクター

ControlBuilderAttribute(Type)

カスタム コントロールのコントロール ビルダーを指定します。Specifies the control builder for a custom control.

フィールド

Default

新しい ControlBuilderAttribute オブジェクトを指定します。Specifies the new ControlBuilderAttribute object. 既定では、新しいオブジェクトは null に設定されます。By default, the new object is set to null. このフィールドは読み取り専用です。This field is read-only.

プロパティ

BuilderType

属性に関連付けられたコントロールの Type を取得します。Gets the Type of the control associated with the attribute. このプロパティは読み取り専用です。This property is read-only.

TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(継承元 Attribute)

メソッド

Equals(Object)

現在の ControlBuilderAttribute が指定したオブジェクトと同一かどうかを示す値を取得します。Gets a value indicating whether the current ControlBuilderAttribute is identical to the specified object.

GetHashCode()

ControlBuilderAttribute オブジェクトのハッシュ コードを返します。Returns the hash code of the ControlBuilderAttribute object.

GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IsDefaultAttribute()

現在のコントロール ビルダーが既定値かどうかを確認します。Determines whether the current control builder is the default.

Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(継承元 Attribute)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(継承元 Attribute)

適用対象

こちらもご覧ください