PropertyTab 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供屬性索引標籤的基底類別。
public ref class PropertyTab abstract : System::ComponentModel::IExtenderProvider
public abstract class PropertyTab : System.ComponentModel.IExtenderProvider
type PropertyTab = class
interface IExtenderProvider
Public MustInherit Class PropertyTab
Implements IExtenderProvider
- 繼承
-
PropertyTab
- 衍生
- 實作
範例
下列程式碼範例提供一個範例 PropertyTab ,其中列出元件上的任何屬性,並依類型名稱排列。
#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";
}
}
};
}
using System.ComponentModel;
using System.Drawing;
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
{
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(@"myproperty.bmp", true);
return bmp;
}
}
}
}
備註
類別 PropertyTab 提供屬性索引標籤的基類行為。屬性索引標籤會顯示在屬性視窗控制項的 PropertyGrid 工具列上,並允許元件顯示其屬性或其他資料的不同檢視。
使用者程式碼通常不會直接建立 的 PropertyTab 實例。 相反地, PropertyTabAttribute 表示元件所要顯示之屬性索引標籤或屬性索引標籤的類型,可以與應該顯示的屬性或型 PropertyTab 別相關聯。
PropertyGrid會具現化 PropertyTab 所 PropertyTabAttribute 指定之型別的 ,與正在流覽之元件的型別或屬性欄位相關聯。
建構函式
PropertyTab() |
初始化 PropertyTab 類別的新執行個體。 |
屬性
Bitmap |
取得顯示 PropertyTab 的點陣圖。 |
Components |
取得或設定屬性索引標籤與其關聯的元件陣列。 |
HelpKeyword |
取得要與這個索引標籤關聯的說明關鍵字。 |
TabName |
取得屬性索引標籤的名稱。 |
方法
CanExtend(Object) |
取得值,表示這個 PropertyTab 是否可以顯示指定元件的屬性。 |
Dispose() |
釋放 PropertyTab 使用的所有資源。 |
Dispose(Boolean) |
釋放 PropertyTab 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。 |
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
Finalize() |
在記憶體回收進行 PropertyTab 回收之前,允許 PropertyTab 嘗試釋放資源,並執行其他清除作業。 |
GetDefaultProperty(Object) |
取得所指定元件的預設屬性。 |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetProperties(ITypeDescriptorContext, Object, Attribute[]) |
取得符合指定屬性 (attribute) 和內容之指定元件的屬性 (property)。 |
GetProperties(Object) |
取得指定元件的屬性。 |
GetProperties(Object, Attribute[]) |
取得符合指定屬性 (attribute) 之指定元件的屬性 (property)。 |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |