Partager via


Utiliser Reset et ShouldSerialize pour contrôler une propriété (Windows Forms .NET)

Dans cet article, vous allez apprendre à créer les Reset<PropertyName> méthodes et ShouldSerialize<PropertyName> à gérer une propriété pour la fenêtre Propriétés dans Visual Studio. Reset et ShouldSerialize sont des méthodes facultatives que vous pouvez fournir pour une propriété, si la propriété n’a pas de valeur par défaut simple. Si la propriété a une valeur par défaut simple, vous devez appliquer la DefaultValueAttribute valeur par défaut et fournir la valeur par défaut au constructeur de classe d’attribut à la place. L’un de ces mécanismes permet les fonctionnalités suivantes dans le concepteur :

  • La propriété fournit une indication visuelle dans le navigateur de propriétés si elle a été modifiée à partir de sa valeur par défaut.
  • L’utilisateur peut cliquer avec le bouton droit sur la propriété et choisir Réinitialiser pour restaurer la propriété à sa valeur par défaut.
  • Le concepteur génère du code plus efficace.

Pour plus d’informations sur les propriétés, consultez Reset and ShouldSerialize.

Code de prise en charge

Cet article illustre les méthodes et ShouldSerialize les Reset méthodes en créant un contrôle rose de boussole. Si vous utilisez votre propre contrôle utilisateur, vous pouvez ignorer cette section.

  1. Ajoutez l’énumération suivante à votre code :

    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. Ajoutez un contrôle utilisateur nommé CompassRose.

  3. Ajoutez une propriété nommée Direction de type Directions au contrôle utilisateur.

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

Réinitialiser

La Reset<PropertyName> méthode réinitialise la propriété correspondante <PropertyName> à sa valeur par défaut.

Le code suivant réinitialise la Direction propriété None, qui est considérée comme la valeur par défaut du contrôle rose boussole :

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

ShouldSerialize

La ShouldSerialize<PropertyName> méthode retourne une valeur booléenne qui indique si la propriété de stockage a changé de sa valeur par défaut et doit être sérialisée dans le code du concepteur.

Le code suivant retourne true lorsque la Direction propriété n’est pas égale None, indiquant qu’une direction a été choisie :

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

Exemple

Le code suivant montre les méthodes et ShouldSerialize les Reset méthodes de la Direction propriété :

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