Export (0) Print
Expand All

PropertyTab Class

Provides a base class for property tabs.

Namespace:  System.Windows.Forms.Design
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class PropertyTab : IExtenderProvider

The PropertyTab type exposes the following members.

  NameDescription
Protected methodPropertyTabInitializes a new instance of the PropertyTab class.
Top

  NameDescription
Public propertyBitmapGets the bitmap that is displayed for the PropertyTab.
Public propertyComponentsGets or sets the array of components the property tab is associated with.
Public propertyHelpKeywordGets the Help keyword that is to be associated with this tab.
Public propertyTabNameGets the name for the property tab.
Top

  NameDescription
Public methodCanExtendGets a value indicating whether this PropertyTab can display properties for the specified component.
Public methodDispose()Releases all the resources used by the PropertyTab.
Protected methodDispose(Boolean)Releases the unmanaged resources used by the PropertyTab and optionally releases the managed resources.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows a PropertyTab to attempt to free resources and perform other cleanup operations before the PropertyTab is reclaimed by garbage collection. (Overrides Object.Finalize().)
Public methodGetDefaultPropertyGets the default property of the specified component.
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetProperties(Object)Gets the properties of the specified component.
Public methodGetProperties(Object, Attribute[])Gets the properties of the specified component that match the specified attributes.
Public methodGetProperties(ITypeDescriptorContext, Object, Attribute[])Gets the properties of the specified component that match the specified attributes and context.
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

The PropertyTab class provides the base class behavior for a property tab. Property tabs are displayed on the toolbar of the PropertyGrid control of the Properties window, and allow a component to display different views of its properties or other data.

User code will usually not create an instance of a PropertyTab directly. Instead, a PropertyTabAttribute that indicates the type of the property tab or property tabs to display for a component can be associated with the properties or types that the PropertyTab should be displayed for.

The PropertyGrid will instantiate a PropertyTab of the type specified by a PropertyTabAttribute associated with the type or property field of the component that is being browsed.

The following code example provides an example PropertyTab that lists any properties on a component, arranged by type name.

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
    {
        [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;
        }
    }
}

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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