PropertyTab Classe

Définition

Fournit une classe de base pour les onglets de propriétés.Provides a base class for property tabs.

public ref class PropertyTab abstract : System::ComponentModel::IExtenderProvider
public abstract class PropertyTab : System.ComponentModel.IExtenderProvider
type PropertyTab = class
    interface IExtenderProvider
Public MustInherit Class PropertyTab
Implements IExtenderProvider
Héritage
PropertyTab
Dérivé
Implémente

Exemples

L’exemple de code suivant fournit un exemple de PropertyTab qui répertorie les propriétés d’un composant, organisées par nom de type.The following code example provides an example PropertyTab that lists any properties on a component, arranged by type name.

#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";
         }
      }

      property System::Drawing::Bitmap^ Bitmap 
      {
         // Provides an image for the property tab.
         virtual System::Drawing::Bitmap^ get() override
         {
            System::Drawing::Bitmap^ bmp = gcnew System::Drawing::Bitmap( DeserializeFromBase64Text( img ) );
            return bmp;
         }
      }

   private:

      // This method can be used to retrieve an Image from a block of Base64-encoded text.
      Image^ DeserializeFromBase64Text( String^ text )
      {
         Image^ img = nullptr;
         array<Byte>^memBytes = Convert::FromBase64String( text );
         IFormatter^ formatter = gcnew BinaryFormatter;
         MemoryStream^ stream = gcnew MemoryStream( memBytes );
         img = dynamic_cast<Image^>(formatter->Deserialize( stream ));
         stream->Close();
         return img;
      }
   };
}
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;
        }
    }
}
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)
        Else
            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
        Get
            Return "Properties by Type"
        End Get
    End Property

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

Remarques

La classe PropertyTab fournit le comportement de la classe de base pour un onglet de propriété. les onglets de propriété sont affichés dans la barre d’outils du contrôle PropertyGrid du Fenêtre Propriétés et permettent à un composant d’afficher différentes vues de ses propriétés ou d’autres données.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.

En général, le code utilisateur ne crée pas une instance d’un PropertyTab directement.User code will usually not create an instance of a PropertyTab directly. Au lieu de cela, un PropertyTabAttribute qui indique le type de l’onglet de propriété ou les onglets de propriété à afficher pour un composant peut être associé aux propriétés ou aux types pour lesquels le PropertyTab doit être affiché.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.

Le PropertyGrid instancie une PropertyTab du type spécifié par un PropertyTabAttribute associé au champ de type ou de propriété du composant parcouru.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.

Constructeurs

PropertyTab()

Initialise une nouvelle instance de la classe PropertyTab.Initializes a new instance of the PropertyTab class.

Propriétés

Bitmap

Obtient la bitmap affichée pour PropertyTab.Gets the bitmap that is displayed for the PropertyTab.

Components

Obtient ou définit le tableau de composants associé à l'onglet de propriété.Gets or sets the array of components the property tab is associated with.

HelpKeyword

Obtient le mot clé d'aide à associer à cet onglet.Gets the Help keyword that is to be associated with this tab.

TabName

Obtient le nom de l'onglet de propriété.Gets the name for the property tab.

Méthodes

CanExtend(Object)

Obtient une valeur indiquant si PropertyTab peut afficher les propriétés du composant spécifié.Gets a value indicating whether this PropertyTab can display properties for the specified component.

Dispose()

Libère toutes les ressources utilisées par PropertyTab.Releases all the resources used by the PropertyTab.

Dispose(Boolean)

Libère les ressources non managées utilisées par PropertyTab et libère éventuellement les ressources managées.Releases the unmanaged resources used by the PropertyTab and optionally releases the managed resources.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
Finalize()

Autorise PropertyTab à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant que PropertyTab ne soit récupéré par l'opération garbage collection.Allows a PropertyTab to attempt to free resources and perform other cleanup operations before the PropertyTab is reclaimed by garbage collection.

GetDefaultProperty(Object)

Obtient la propriété par défaut du composant spécifié.Gets the default property of the specified component.

GetHashCode()

Sert de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

Obtient les propriétés du composant spécifié correspondant aux attributs et au contexte spécifiés.Gets the properties of the specified component that match the specified attributes and context.

GetProperties(Object)

Obtient les propriétés du composant spécifié.Gets the properties of the specified component.

GetProperties(Object, Attribute[])

Obtient les propriétés du composant spécifié correspondant aux attributs spécifiés.Gets the properties of the specified component that match the specified attributes.

GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actif.Returns a string that represents the current object.

(Hérité de Object)

S’applique à