PropertyTab Class

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 MustInherit Class PropertyTab _
	Implements IExtenderProvider

The PropertyTab type exposes the following members.

Protected methodPropertyTabInitializes a new instance of the PropertyTab class.

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.

Public methodCanExtendGets a value indicating whether this PropertyTab can display properties for the specified component.
Public methodDisposeReleases 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 a hash function for a particular type. (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.)

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.

Imports System
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)
            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
            Return "Properties by Type"
        End Get
    End Property

    ' Provides an image for the property tab.
    Public Overrides ReadOnly Property Bitmap() As System.Drawing.Bitmap
            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)
        Return img
    End Function
End Class

.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

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.

Community Additions

© 2016 Microsoft