Compartir a través de


Uso de Reset y ShouldSerialize para controlar una propiedad (Windows Forms .NET)

En este artículo, obtendrá información sobre cómo crear los métodos Reset<PropertyName> y ShouldSerialize<PropertyName> para administrar una propiedad para la ventana Propiedades en Visual Studio. Reset y ShouldSerialize son métodos opcionales que puede proporcionar para una propiedad, si la propiedad no tiene un valor predeterminado simple. Si la propiedad tiene un valor predeterminado simple, debe aplicar DefaultValueAttribute y proporcionar el valor predeterminado al constructor de la clase de atributos en su lugar. Cualquiera de estos mecanismos habilita las siguientes características en el diseñador:

  • La propiedad proporciona una indicación visual en el explorador de propiedades si se ha modificado a partir de su valor predeterminado.
  • El usuario puede hacer clic con el botón derecho en la propiedad y elegir Restablecer para restaurar la propiedad a su valor predeterminado.
  • El diseñador genera código más eficaz.

Para obtener más información sobre las propiedades, consulte Reset y ShouldSerialize.

Código auxiliar

En este artículo se muestran los métodos Reset y ShouldSerialize mediante la creación de un control de rosa de los vientos. Si está trabajando con su propio control de usuario, puede omitir esta sección.

  1. Agregue la siguiente enumeración al código:

    public enum Directions
    {
        None,
        North,
        NorthEast,
        East,
        SouthEast,
        South,
        SouthWest,
        West,
        NorthWest,
    }
    
    Public Enum Directions
        None
        North
        NorthEast
        East
        SouthEast
        South
        SouthWest
        West
        NorthWest
    End Enum
    
  2. Agregue un control de usuario denominado CompassRose.

  3. Agregue una propiedad denominada Direction de tipo Directions al control de usuario.

    public Directions Direction { get; set; } = Directions.None;
    
    Public Property Direction As Directions = Directions.None
    

Reset

El método Reset<PropertyName> restablece la propiedad <PropertyName> correspondiente a su valor predeterminado.

El siguiente código restablece la propiedad Direction a None, que se considera el valor predeterminado para el control de rosa de los vientos:

private void ResetDirection() =>
    Direction = Directions.None;
Private Sub ResetDirection()
    Direction = Directions.None
End Sub

ShouldSerialize

El método ShouldSerialize<PropertyName> devuelve un valor booleano que indica si la propiedad de respaldo ha cambiado de su valor predeterminado y debe serializarse en el código del diseñador.

El siguiente código devuelve true cuando la propiedad Direction no es igual a None, lo que indica que se ha elegido una dirección:

private bool ShouldSerializeDirection() =>
    Direction != Directions.None;
Private Function ShouldSerializeDirection() As Boolean
    Return Direction <> Directions.None
End Function

Ejemplo

En el siguiente código se muestran los métodos Reset y ShouldSerialize para la propiedad Direction:

public partial class CompassRose : UserControl
{
    public Directions Direction { get; set; } = Directions.None;

    public CompassRose() =>
        InitializeComponent();

    private void ResetDirection() =>
        Direction = Directions.None;

    private bool ShouldSerializeDirection() =>
        Direction != Directions.None;
}
Public Class CompassRose

    Public Property Direction As Directions = Directions.None

    Private Sub ResetDirection()
        Direction = Directions.None
    End Sub

    Private Function ShouldSerializeDirection() As Boolean
        Return Direction <> Directions.None
    End Function

End Class