次の方法で共有


DesignerAttribute クラス

コンポーネントに対するデザイン時サービスを実装するために使用するクラスを指定します。

この型のすべてのメンバの一覧については、DesignerAttribute メンバ を参照してください。

System.Object
   System.Attribute
      System.ComponentModel.DesignerAttribute

<AttributeUsage(AttributeTargets.Class Or _
   AttributeTargets.Interface)>
NotInheritable Public Class DesignerAttribute   Inherits Attribute
[C#]
[AttributeUsage(AttributeTargets.Class |
   AttributeTargets.Interface)]
public sealed class DesignerAttribute : Attribute
[C++]
[AttributeUsage(AttributeTargets::Class |
   AttributeTargets::Interface)]
public __gc __sealed class DesignerAttribute : public Attribute
[JScript]
public
   AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)
class DesignerAttribute extends Attribute

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

デザイン時サービスに使用するクラスは、 IDesigner インターフェイスを実装している必要があります。

デザイナの基本型を検索するには、 DesignerBaseTypeName プロパティを使用します。このメンバと関連付けられたデザイナの型名を取得するには、 DesignerTypeName プロパティを使用します。

詳細については、「 属性の概要 」および「 属性を使用したメタデータの拡張 」を参照してください。

使用例

[Visual Basic, C#, C++] MyForm というクラスを作成する方法を次の例に示します。 MyForm には、このクラスが DocumentDesigner を使用することを指定する DesignerAttribute と、 Form カテゴリを指定する DesignerCategoryAttribute という 2 つの属性があります。

 
<Designer("System.Windows.Forms.Design.DocumentDesigner, System.Windows.Forms.Design.DLL", _
    GetType(IRootDesigner)), DesignerCategory("Form")> _
Public Class MyForm
    
    Inherits ContainerControl
    ' Insert code here.
End Class 'MyForm

[C#] 
[Designer("System.Windows.Forms.Design.DocumentDesigner, System.Windows.Forms.Design.DLL", 
    typeof(IRootDesigner)),
    DesignerCategory("Form")]
public class MyForm : ContainerControl {
    // Insert code here.
}

[C++] 
[Designer(S"System.Windows.Forms.Design.DocumentDesigner, System.Windows.Forms.Design.DLL", 
          __typeof(IRootDesigner)),
          DesignerCategory(S"Form")]
__gc class MyForm : public ContainerControl {
    // Insert code here.
};

[Visual Basic, C#, C++] MyForm のインスタンスを作成する例を次に示します。そのクラスの属性を取得し、 DesignerAttribute を抽出してから、デザイナの名前を出力します。

 
Public Shared Function Main() As Integer
    ' Creates a new form.
    Dim myNewForm As New MyForm()
    
    ' Gets the attributes for the collection.
    Dim attributes As AttributeCollection = TypeDescriptor.GetAttributes(myNewForm)
    
    ' Prints the name of the designer by retrieving the DesignerAttribute
    ' from the AttributeCollection. 
    Dim myAttribute As DesignerAttribute = _
        CType(attributes(GetType(DesignerAttribute)), DesignerAttribute)
    Console.WriteLine(("The designer for this class is: " & myAttribute.DesignerTypeName))
    
    Return 0
End Function 'Main

[C#] 
public static int Main() {
    // Creates a new form.
    MyForm myNewForm = new MyForm();
 
    // Gets the attributes for the collection.
    AttributeCollection attributes = TypeDescriptor.GetAttributes(myNewForm);
 
    /* Prints the name of the designer by retrieving the DesignerAttribute
     * from the AttributeCollection. */
    DesignerAttribute myAttribute = 
       (DesignerAttribute)attributes[typeof(DesignerAttribute)];
    Console.WriteLine("The designer for this class is: " + myAttribute.DesignerTypeName);
  
    return 0;
}

[C++] 
int main() {
    // Creates a new form.
    MyForm* myNewForm = new MyForm();

    // Gets the attributes for the collection.
    AttributeCollection* attributes = TypeDescriptor::GetAttributes(myNewForm);

    /* Prints the name of the designer by retrieving the DesignerAttribute
    * from the AttributeCollection. */
    DesignerAttribute* myAttribute = 
        dynamic_cast<DesignerAttribute*>(attributes->Item[__typeof(DesignerAttribute)]);
    Console::WriteLine(S"The designer for this class is: {0}", myAttribute->DesignerTypeName);

    return 0;
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.ComponentModel

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System (System.dll 内)

参照

DesignerAttribute メンバ | System.ComponentModel 名前空間 | Attribute