Compartir a través de


Definir una propiedad en los controles de formularios Windows Forms

Para ver información general de las propiedades, vea Información general sobre propiedades. Al definir una propiedad, conviene tener presente una serie de consideraciones importantes:

  • Se deben aplicar atributos a las propiedades que se definan. Los atributos especifican cómo debe mostrar el diseñador una propiedad. Para obtener información detallada, vea Atributos en tiempo de diseño para componentes.

  • Si la modificación de una propiedad afecta a la apariencia visual del control, se debe llamar al método Invalidate (que el control hereda de Control) desde el descriptor de acceso set. Invalidate llama a su vez al método OnPaint, que vuelve a dibujar el control. Si se realizan muchas llamadas a Invalidate, se obtiene como resultado una llamada única a OnPaint para mayor eficiencia.

  • La biblioteca de clases de .NET Framework proporciona convertidores de tipos para los tipos de datos habituales, como enteros, decimales, valores booleanos y otros. En general, los convertidores de tipos tienen por objeto proporcionar conversiones de cadena a valor (de datos de cadena a otros tipos de datos). Los tipos de datos habituales están asociados a convertidores de tipos predeterminados que convierten valores en cadenas, y las cadenas en los tipos de datos correspondientes. Si se define una propiedad que constituye un tipo de datos personalizado (es decir no estándar), se deberá aplicar un atributo que especifique el convertidor de tipos que se asociará a dicha propiedad. También se puede utilizar un atributo para asociar un editor de tipos de interfaz de usuario personalizado a una propiedad. Los editores de tipos de interfaz de usuario proporcionan una interfaz de usuario para editar una propiedad o un tipo de datos. Los selectores de colores son un ejemplo de editor de tipos de interfaz de usuario. Al final de este tema se muestran varios ejemplos de atributos.

    Nota

    Si no está disponible un convertidor de tipos o un editor de tipos de interfaz de usuario para la propiedad personalizada, se puede implementar uno, como se describe en Ampliar compatibilidad en tiempo de diseño.

El siguiente fragmento de código define una propiedad personalizada denominada EndColor del control personalizado FlashTrackBar.

Public Class FlashTrackBar
   Inherits Control
   ...
   ' Private data member that backs the EndColor property.
   Private _endColor As Color = Color.LimeGreen

   ' The Category attribute tells the designer to display
   ' it in the Flash grouping. 
   ' The Description attribute provides a description of
   ' the property. 
   <Category("Flash"), _
   Description("The ending color of the bar.")>  _
   Public Property EndColor() As Color
      ' The public property EndColor accesses _endColor.
      Get
         Return _endColor
      End Get
      Set
         _endColor = value
         If Not (baseBackground Is Nothing) And showGradient Then
            baseBackground.Dispose()
            baseBackground = Nothing
         End If
         ' The Invalidate method calls the OnPaint method, which redraws  
         ' the control.
         Invalidate()
      End Set
   End Property
   ...
End Class
public class FlashTrackBar : Control {
   ...
   // Private data member that backs the EndColor property.
   private Color endColor = Color.LimeGreen;
   // The Category attribute tells the designer to display
   // it in the Flash grouping. 
   // The Description attribute provides a description of
   // the property. 
   [
   Category("Flash"),
   Description("The ending color of the bar.")
   ]
   // The public property EndColor accesses endColor.
   public Color EndColor {
      get {
         return endColor;
      }
      set {
         endColor = value;
         if (baseBackground != null && showGradient) {
            baseBackground.Dispose();
            baseBackground = null;
         }
         // The Invalidate method calls the OnPaint method, which redraws 
         // the control.
         Invalidate();
      }
   }
   ...
}

El fragmento de código siguiente asocia un convertidor de tipos y un editor de tipos de interfaz de usuario a la propiedad Value. En este caso, Value es un entero y cuenta con un convertidor de tipos predeterminado, pero el atributo TypeConverterAttribute aplica un convertidor de tipos personalizado (FlashTrackBarValueConverter) que permite al diseñador mostrarlo como un porcentaje. El editor de tipos de interfaz de usuario, FlashTrackBarValueEditor, permite que el porcentaje se muestre visualmente. Este ejemplo también muestra cómo el convertidor de tipos o el editor especificado por el atributo TypeConverterAttribute o EditorAttribute reemplaza al convertidor predeterminado.

<Category("Flash"), _
TypeConverter(GetType(FlashTrackBarValueConverter)), _
Editor(GetType(FlashTrackBarValueEditor), _
GetType(UITypeEditor)), _
Description("The current value of the track bar.  You can enter an actual value or a percentage.")>  _
Public ReadOnly Property Value() As Integer
...
End Property
[
Category("Flash"), 
TypeConverter(typeof(FlashTrackBarValueConverter)),
Editor(typeof(FlashTrackBarValueEditor), typeof(UITypeEditor)),
Description("The current value of the track bar.  You can enter an actual value or a percentage.")
]
public int Value {
...
}

Vea también

Conceptos

Definir valores predeterminados con los métodos ShouldSerialize y Reset

Eventos de cambio de propiedades

Atributos en controles de formularios Windows Forms

Otros recursos

Propiedades de los controles de formularios Windows Forms