PropertyTabAttribute クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したクラスに対して表示するプロパティ タブを識別します。
public ref class PropertyTabAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.All)]
public class PropertyTabAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.All)>]
type PropertyTabAttribute = class
inherit Attribute
Public Class PropertyTabAttribute
Inherits Attribute
- 継承
- 属性
例
次のコード例は、プロパティ タブを指定するために使用 PropertyTabAttribute する方法を示しています。コード例では、選択した別のコンポーネントのプロパティを型別に公開するコンポーネントを定義します。
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Drawing;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Binary;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
using namespace System::Security::Permissions;
namespace TypeCategoryTabExample
{
ref class TypeCategoryTab;
// forward declaration.
// This component adds a TypeCategoryTab to the propery browser
// that is available for any components in the current design mode document.
[PropertyTabAttribute(TypeCategoryTabExample::TypeCategoryTab::typeid,PropertyTabScope::Document)]
public ref class TypeCategoryTabComponent: public System::ComponentModel::Component
{
public:
TypeCategoryTabComponent(){}
};
// A TypeCategoryTab property tab lists properties by the
// category of the type of each property.
public ref class TypeCategoryTab: public PropertyTab
{
private:
// This String^ contains a Base-64 encoded and serialized example property tab image.
[BrowsableAttribute(true)]
String^ img;
public:
TypeCategoryTab()
{
img = "AAEAAAD/////AQAAAAAAAAAMAgAAAFRTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0xLjAuMzMwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA9gAAAAJCTfYAAAAAAAAANgAAACgAAAAIAAAACAAAAAEAGAAAAAAAAAAAAMQOAADEDgAAAAAAAAAAAAD///////////////////////////////////9ZgABZgADzPz/zPz/zPz9AgP//////////gAD/gAD/AAD/AAD/AACKyub///////+AAACAAAAAAP8AAP8AAP9AgP////////9ZgABZgABz13hz13hz13hAgP//////////gAD/gACA/wCA/wCA/wAA//////////+AAACAAAAAAP8AAP8AAP9AgP////////////////////////////////////8L";
}
// Returns the properties of the specified component extended with
// a CategoryAttribute reflecting the name of the type of the property.
[ReflectionPermission(SecurityAction::Demand, Flags=ReflectionPermissionFlag::MemberAccess)]
virtual System::ComponentModel::PropertyDescriptorCollection^ GetProperties( Object^ component, array<System::Attribute^>^attributes ) override
{
PropertyDescriptorCollection^ props;
if ( attributes == nullptr )
props = TypeDescriptor::GetProperties( component );
else
props = TypeDescriptor::GetProperties( component, attributes );
array<PropertyDescriptor^>^propArray = gcnew array<PropertyDescriptor^>(props->Count);
for ( int i = 0; i < props->Count; i++ )
{
// Create a new PropertyDescriptor from the old one, with
// a CategoryAttribute matching the name of the type.
array<Attribute^>^temp0 = {gcnew CategoryAttribute( props[ i ]->PropertyType->Name )};
propArray[ i ] = TypeDescriptor::CreateProperty( props[ i ]->ComponentType, props[ i ], temp0 );
}
return gcnew PropertyDescriptorCollection( propArray );
}
virtual System::ComponentModel::PropertyDescriptorCollection^ GetProperties( Object^ component ) override
{
return this->GetProperties( component, nullptr );
}
property String^ TabName
{
// Provides the name for the property tab.
virtual String^ get() override
{
return "Properties by Type";
}
}
property System::Drawing::Bitmap^ Bitmap
{
// Provides an image for the property tab.
virtual System::Drawing::Bitmap^ get() override
{
System::Drawing::Bitmap^ bmp = gcnew System::Drawing::Bitmap( DeserializeFromBase64Text( img ) );
return bmp;
}
}
private:
// This method can be used to retrieve an Image from a block of Base64-encoded text.
Image^ DeserializeFromBase64Text( String^ text )
{
Image^ img = nullptr;
array<Byte>^memBytes = Convert::FromBase64String( text );
IFormatter^ formatter = gcnew BinaryFormatter;
MemoryStream^ stream = gcnew MemoryStream( memBytes );
img = dynamic_cast<Image^>(formatter->Deserialize( stream ));
stream->Close();
return img;
}
};
}
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.IO;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace TypeCategoryTabExample
{
// This component adds a TypeCategoryTab to the property browser
// that is available for any components in the current design mode document.
[PropertyTabAttribute(typeof(TypeCategoryTab), PropertyTabScope.Document)]
public class TypeCategoryTabComponent : System.ComponentModel.Component
{
public TypeCategoryTabComponent()
{
}
}
// A TypeCategoryTab property tab lists properties by the
// category of the type of each property.
public class TypeCategoryTab : PropertyTab
{
[BrowsableAttribute(true)]
// This string contains a Base-64 encoded and serialized example property tab image.
private string img = "AAEAAAD/////AQAAAAAAAAAMAgAAAFRTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0xLjAuMzMwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA9gAAAAJCTfYAAAAAAAAANgAAACgAAAAIAAAACAAAAAEAGAAAAAAAAAAAAMQOAADEDgAAAAAAAAAAAAD///////////////////////////////////9ZgABZgADzPz/zPz/zPz9AgP//////////gAD/gAD/AAD/AAD/AACKyub///////+AAACAAAAAAP8AAP8AAP9AgP////////9ZgABZgABz13hz13hz13hAgP//////////gAD/gACA/wCA/wCA/wAA//////////+AAACAAAAAAP8AAP8AAP9AgP////////////////////////////////////8L";
public TypeCategoryTab()
{
}
// Returns the properties of the specified component extended with
// a CategoryAttribute reflecting the name of the type of the property.
public override System.ComponentModel.PropertyDescriptorCollection GetProperties(object component, System.Attribute[] attributes)
{
PropertyDescriptorCollection props;
if( attributes == null )
props = TypeDescriptor.GetProperties(component);
else
props = TypeDescriptor.GetProperties(component, attributes);
PropertyDescriptor[] propArray = new PropertyDescriptor[props.Count];
for(int i=0; i<props.Count; i++)
{
// Create a new PropertyDescriptor from the old one, with
// a CategoryAttribute matching the name of the type.
propArray[i] = TypeDescriptor.CreateProperty(props[i].ComponentType, props[i], new CategoryAttribute(props[i].PropertyType.Name));
}
return new PropertyDescriptorCollection( propArray );
}
public override System.ComponentModel.PropertyDescriptorCollection GetProperties(object component)
{
return this.GetProperties(component, null);
}
// Provides the name for the property tab.
public override string TabName
{
get
{
return "Properties by Type";
}
}
// Provides an image for the property tab.
public override System.Drawing.Bitmap Bitmap
{
get
{
Bitmap bmp = new Bitmap(DeserializeFromBase64Text(img));
return bmp;
}
}
// This method can be used to retrieve an Image from a block of Base64-encoded text.
private Image DeserializeFromBase64Text(string text)
{
Image img = null;
byte[] memBytes = Convert.FromBase64String(text);
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream(memBytes);
img = (Image)formatter.Deserialize(stream);
stream.Close();
return img;
}
}
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.IO
Imports System.Reflection
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
' This component adds a TypeCategoryTab to the property browser
' that is available for any components in the current design mode document.
<PropertyTabAttribute(GetType(TypeCategoryTab), PropertyTabScope.Document)> _
Public Class TypeCategoryTabComponent
Inherits System.ComponentModel.Component
Public Sub New()
End Sub
End Class
' A TypeCategoryTab property tab lists properties by the
' category of the type of each property.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class TypeCategoryTab
Inherits PropertyTab
' This string contains a Base-64 encoded and serialized example property tab image.
<BrowsableAttribute(True)> _
Private img As String = "AAEAAAD/////AQAAAAAAAAAMAgAAAFRTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj0xLjAuMzMwMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABVTeXN0ZW0uRHJhd2luZy5CaXRtYXABAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA9gAAAAJCTfYAAAAAAAAANgAAACgAAAAIAAAACAAAAAEAGAAAAAAAAAAAAMQOAADEDgAAAAAAAAAAAAD///////////////////////////////////9ZgABZgADzPz/zPz/zPz9AgP//////////gAD/gAD/AAD/AAD/AACKyub///////+AAACAAAAAAP8AAP8AAP9AgP////////9ZgABZgABz13hz13hz13hAgP//////////gAD/gACA/wCA/wCA/wAA//////////+AAACAAAAAAP8AAP8AAP9AgP////////////////////////////////////8L"
Public Sub New()
End Sub
' Returns the properties of the specified component extended with
' a CategoryAttribute reflecting the name of the type of the property.
Public Overloads Overrides Function GetProperties(ByVal component As Object, ByVal attributes() As System.Attribute) As System.ComponentModel.PropertyDescriptorCollection
Dim props As PropertyDescriptorCollection
If attributes Is Nothing Then
props = TypeDescriptor.GetProperties(component)
Else
props = TypeDescriptor.GetProperties(component, attributes)
End If
Dim propArray(props.Count - 1) As PropertyDescriptor
Dim i As Integer
For i = 0 To props.Count - 1
' Create a new PropertyDescriptor from the old one, with
' a CategoryAttribute matching the name of the type.
propArray(i) = TypeDescriptor.CreateProperty(props(i).ComponentType, props(i), New CategoryAttribute(props(i).PropertyType.Name))
Next i
Return New PropertyDescriptorCollection(propArray)
End Function
Public Overloads Overrides Function GetProperties(ByVal component As Object) As System.ComponentModel.PropertyDescriptorCollection
Return Me.GetProperties(component, Nothing)
End Function
' Provides the name for the property tab.
Public Overrides ReadOnly Property TabName() As String
Get
Return "Properties by Type"
End Get
End Property
' Provides an image for the property tab.
Public Overrides ReadOnly Property Bitmap() As System.Drawing.Bitmap
Get
Dim bmp As New Bitmap(DeserializeFromBase64Text(img))
Return bmp
End Get
End Property
' This method can be used to retrieve an Image from a block of Base64-encoded text.
Private Function DeserializeFromBase64Text(ByVal [text] As String) As Image
Dim img As Image = Nothing
Dim memBytes As Byte() = Convert.FromBase64String([text])
Dim formatter As New BinaryFormatter()
Dim stream As New MemoryStream(memBytes)
img = CType(formatter.Deserialize(stream), Image)
stream.Close()
Return img
End Function
End Class
注釈
PropertyTabAttributeコントロールに新しいプロパティ ページをPropertyGrid追加できます。 追加 PropertyTabAttribute のプロパティ タブを追加して、コンポーネントの既定のプロパティ セット以外のプロパティ情報を公開できます。
コンストラクター
PropertyTabAttribute() |
PropertyTabAttribute クラスの新しいインスタンスを初期化します。 |
PropertyTabAttribute(String) |
タブ クラスの名前を指定して、PropertyTabAttribute クラスの新しいインスタンスを初期化します。 |
PropertyTabAttribute(String, PropertyTabScope) |
タブ クラスの名前とタブのスコープを指定して、PropertyTabAttribute クラスの新しいインスタンスを初期化します。 |
PropertyTabAttribute(Type) |
タブの型を指定して、PropertyTabAttribute クラスの新しいインスタンスを初期化します。 |
PropertyTabAttribute(Type, PropertyTabScope) |
タブの型とタブのスコープを指定して、PropertyTabAttribute クラスの新しいインスタンスを初期化します。 |
プロパティ
TabClasses |
属性が使用するタブの型を取得します。 |
TabClassNames |
属性が使用するタブ クラスの名前を取得します。 |
TabScopes |
PropertyTabAttribute の各タブのスコープの配列を取得します。 |
TypeId |
派生クラスで実装されると、この Attribute の一意の識別子を取得します。 (継承元 Attribute) |
メソッド
Equals(Object) |
このインスタンスが指定されたオブジェクトに等しいかどうかを示す値を返します。 |
Equals(PropertyTabAttribute) |
対象のインスタンスが、指定した属性に等しいかどうかを示す値を返します。 |
GetHashCode() |
オブジェクトのハッシュ コードを取得します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
InitializeArrays(String[], PropertyTabScope[]) |
タブ クラスの名前とタブのスコープの配列を指定して、属性を初期化します。 |
InitializeArrays(Type[], PropertyTabScope[]) |
タブ クラスの名前とタブのスコープの配列を指定して、属性を初期化します。 |
IsDefaultAttribute() |
派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。 (継承元 Attribute) |
Match(Object) |
派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (継承元 Attribute) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
明示的なインターフェイスの実装
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
一連の名前を対応する一連のディスパッチ識別子に割り当てます。 (継承元 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。 (継承元 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。 (継承元 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。 (継承元 Attribute) |