This documentation is archived and is not being maintained.

CategoryAttribute Class

Specifies the name of the category in which to group the property or event when displayed in a System.Windows.Forms.PropertyGrid control set to Categorized mode.

For a list of all members of this type, see CategoryAttribute Members.


[Visual Basic]
Public Class CategoryAttribute
   Inherits Attribute
public class CategoryAttribute : Attribute
public __gc class CategoryAttribute : public Attribute
class CategoryAttribute extends Attribute

Thread Safety

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


A CategoryAttribute indicates the category to associate the associated property or event with, when listing properties or events in a System.Windows.Forms.PropertyGrid control set to Categorized mode. If a CategoryAttribute has not been applied to a property or event, the System.Windows.Forms.PropertyGrid associates it with the Misc category. A new category can be created for any name by specifying the name of the category in the constructor for the CategoryAttribute.

The Category property indicates the name of the category that the attribute represents. The Category property also provides transparent localization of category names.

Notes to Inheritors:  If you use category names other than the predefined names, and you want to localize your category names, you must override the GetLocalizedString method. Additionally, you can override the Category property to provide your own logic for localization.

The CategoryAttribute class defines the following common categories:

Category Description
Action Properties related to available actions.
Appearance Properties related to how an entity appears.
Behavior Properties related to how an entity acts.
Data Properties related to data and data source management.
Default Properties that are grouped in a default category.
Design Properties that are available only at design time.
DragDrop Properties related to drag-and-drop operations.
Focus Properties related to focus.
Format Properties related to formatting.
Key Properties related to the keyboard.
Layout Properties related to layout.
Mouse Properties related to the mouse.
WindowStyle Properties related to the window style of top-level forms.

For more information, see Attributes Overview and Extending Metadata Using Attributes.


[Visual Basic, C#, C++] The following example creates the MyImage property. The property has two attributes: a DescriptionAttribute and a CategoryAttribute.

[Visual Basic] 
<Description("The image associated with the control"), _
    Category("Appearance")> _
Public Property MyImage() As Image
        ' Insert code here.
        Return image1
    End Get
        ' Insert code here.
    End Set 
End Property

[Description("The image associated with the control"),Category("Appearance")] 
 public Image MyImage {
    get {
       // Insert code here.
       return image1;
    set {
       // Insert code here.

[Description(S"The image associated with the control"),Category(S"Appearance")]
__property System::Drawing::Image* get_MyImage() {
    // Insert code here.
    return m_Image1;

__property void set_MyImage( System::Drawing::Image* ) {
    // Insert code here.

[Visual Basic, C#, C++] The next example gets the category for MyImage. First, the code gets a PropertyDescriptorCollection with all the properties for the object. Next, the code indexes into the PropertyDescriptorCollection to get MyImage. Then it returns the attributes for this property and saves them in the variable attributes.

[Visual Basic, C#, C++] The example then prints the category by retrieving CategoryAttribute from the AttributeCollection, and writing it to the console screen.

[Visual Basic] 
' Gets the attributes for the property.
Dim attributes As AttributeCollection = _

' Prints the description by retrieving the CategoryAttribute. 
' from the AttributeCollection.
Dim myAttribute As CategoryAttribute = _
    CType(attributes(GetType(CategoryAttribute)), CategoryAttribute)

// Gets the attributes for the property.
 AttributeCollection attributes = 
 // Prints the description by retrieving the CategoryAttribute.
 // from the AttributeCollection.
 CategoryAttribute myAttribute = 

// Gets the attributes for the property.
 AttributeCollection* attributes =

 // Prints the description by retrieving the CategoryAttribute.
 // from the AttributeCollection.
 CategoryAttribute* myAttribute =

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.


Namespace: System.ComponentModel

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: System (in System.dll)

See Also

CategoryAttribute Members | System.ComponentModel Namespace | Attribute | PropertyDescriptor | EventDescriptor