PropertyTabAttribute Class
Collapse the table of content
Expand the table of content

PropertyTabAttribute Class


Identifies the property tab or tabs to display for the specified class or classes.

Namespace:   System.ComponentModel
Assembly:  System (in System.dll)


public class PropertyTabAttribute : Attribute


Initializes a new instance of the PropertyTabAttribute class.


Initializes a new instance of the PropertyTabAttribute class using the specified tab class name.

System_CAPS_pubmethodPropertyTabAttribute(String, PropertyTabScope)

Initializes a new instance of the PropertyTabAttribute class using the specified tab class name and tab scope.


Initializes a new instance of the PropertyTabAttribute class using the specified type of tab.

System_CAPS_pubmethodPropertyTabAttribute(Type, PropertyTabScope)

Initializes a new instance of the PropertyTabAttribute class using the specified type of tab and tab scope.


Gets the types of tabs that this attribute uses.


Gets the names of the tab classes that this attribute uses.


Gets an array of tab scopes of each tab of this PropertyTabAttribute.


When implemented in a derived class, gets a unique identifier for this Attribute.(Inherited from Attribute.)


Returns a value indicating whether this instance is equal to a specified object.(Overrides Attribute.Equals(Object).)


Returns a value indicating whether this instance is equal to a specified attribute.


Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)


Gets the hash code for this object.(Overrides Attribute.GetHashCode().)


Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodInitializeArrays(String[], PropertyTabScope[])

Initializes the attribute using the specified names of tab classes and array of tab scopes.

System_CAPS_protmethodInitializeArrays(Type[], PropertyTabScope[])

Initializes the attribute using the specified names of tab classes and array of tab scopes.


When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.(Inherited from Attribute.)


When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.(Inherited from Attribute.)


Creates a shallow copy of the current Object.(Inherited from Object.)


Returns a string that represents the current object.(Inherited from Object.)

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

Maps a set of names to a corresponding set of dispatch identifiers.(Inherited from Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Retrieves the type information for an object, which can be used to get the type information for an interface.(Inherited from Attribute.)


Retrieves the number of type information interfaces that an object provides (either 0 or 1).(Inherited from Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Provides access to properties and methods exposed by an object.(Inherited from Attribute.)

The PropertyTabAttribute lets you add a new property page to a PropertyGrid control. The PropertyTabAttribute can add additional property tabs to expose property information other than a component's default set of properties.

The following code example demonstrates how to use the PropertyTabAttribute to specify a property tab. The code example defines a component that exposes the properties of another selected component by type.

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.
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    public class TypeCategoryTab : PropertyTab
        // 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);    
                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
                return "Properties by Type";

        // Provides an image for the property tab.
        public override System.Drawing.Bitmap Bitmap
                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);
            return img;

.NET Framework
Available since 1.1

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
© 2015 Microsoft