PropertyTabAttribute 類別

定義

識別要針對指定類別或類別顯示的屬性索引標籤或索引標籤。

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
屬性

範例

以下程式碼範例示範如何使用 來 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";
         }
      }
   };
}
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.
[PropertyTab(typeof(TypeCategoryTab), PropertyTabScope.Document)]
public class TypeCategoryTabComponent : 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 PropertyDescriptorCollection GetProperties(object component, System.Attribute[] attributes)
    {
        PropertyDescriptorCollection props = attributes == null ? TypeDescriptor.GetProperties(component) : 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 PropertyDescriptorCollection GetProperties(object component) => GetProperties(component, null);

    // Provides the name for the property tab.
    public override string TabName => "Properties by Type";

    // Provides an image for the property tab.
    public override Bitmap Bitmap => new("myproperty.bmp", true);
}

備註

這個功能 PropertyTabAttribute 讓你可以為控制項新增一個屬性頁面 PropertyGrid 。 它們 PropertyTabAttribute 可以新增屬性分頁,揭露元件預設屬性以外的屬性資訊。

建構函式

名稱 Description
PropertyTabAttribute()

初始化 PropertyTabAttribute 類別的新執行個體。

PropertyTabAttribute(String, PropertyTabScope)

使用指定的 tab 類別名稱和 tab 作用域初始化該 PropertyTabAttribute 類別的新實例。

PropertyTabAttribute(String)

使用指定的 tab 類別名稱初始化該類別的新實例 PropertyTabAttribute

PropertyTabAttribute(Type, PropertyTabScope)

使用指定的 tab 類型與 tab 作用域初始化該類別的新實例 PropertyTabAttribute

PropertyTabAttribute(Type)

使用指定類型的 Tab 初始化該類別的新實例 PropertyTabAttribute

屬性

名稱 Description
TabClasses

取得這個屬性所使用的分頁類型。

TabClassNames

取得該屬性所使用的 tab 類別名稱。

TabScopes

會取得每個分頁 PropertyTabAttribute的分頁範圍陣列。

TypeId

在衍生類別中實作時,取得這個 Attribute的唯一標識碼。

(繼承來源 Attribute)

方法

名稱 Description
Equals(Object)

傳回值,指出這個實例是否等於指定的物件。

Equals(PropertyTabAttribute)

回傳一個值,表示該實例是否等於指定屬性。

GetHashCode()

取得這個物件的雜湊碼。

GetType()

取得目前實例的 Type

(繼承來源 Object)
InitializeArrays(String[], PropertyTabScope[])

使用指定的分頁類別名稱和分頁作用域陣列初始化屬性。

InitializeArrays(Type[], PropertyTabScope[])

使用指定的分頁類別名稱和分頁作用域陣列初始化屬性。

IsDefaultAttribute()

在衍生類別中覆寫時,指出這個實例的值是否為衍生類別的預設值。

(繼承來源 Attribute)
Match(Object)

在衍生類別中覆寫時,傳回值,指出這個實例是否等於指定的物件。

(繼承來源 Attribute)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

名稱 Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

(繼承來源 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取 物件的型別資訊,可用來取得介面的類型資訊。

(繼承來源 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

(繼承來源 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開屬性和方法的存取權。

(繼承來源 Attribute)

適用於