Använda Reset och ShouldSerialize för att styra en egenskap

I den här artikeln får du lära dig hur du skapar metoderna Reset<PropertyName> och ShouldSerialize<PropertyName> för att hantera en egenskap för fönstret Egenskaper i Visual Studio. Reset och ShouldSerialize är valfria metoder som du kan ange för en egenskap, om egenskapen inte har ett enkelt standardvärde. Om egenskapen har ett enkelt standardvärde bör du använda DefaultValueAttribute och ange standardvärdet för attributklasskonstruktorn i stället. Någon av dessa mekanismer möjliggör följande funktioner i designern:

  • Egenskapen ger visuell indikation i egenskapswebbläsaren om den har ändrats från standardvärdet.
  • Användaren kan högerklicka på egenskapen och välja Återställ för att återställa egenskapen till standardvärdet.
  • Designern genererar effektivare kod.

Mer information om egenskaper finns i Reset and ShouldSerialize.

Stödkod

Den här artikeln visar metoderna Reset och ShouldSerialize genom att skapa en kontroll för kompassros. Om du arbetar med din egen användarkontroll kan du hoppa över det här avsnittet.

  1. Lägg till följande uppräkning i koden:

    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. Lägg till en användarkontroll med namnet CompassRose.

  3. Lägg till en egenskap med namnet Direction av typen Directions till användarkontrollen.

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

Återställ

Metoden Reset<PropertyName> återställer motsvarande egenskap för <PropertyName> till standardvärdet.

Följande kod återställer egenskapen Direction till None, som anses vara standardvärdet för kompass rose-kontrollen:

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

ShouldSerialize

Metoden ShouldSerialize<PropertyName> returnerar ett booleskt värde som anger om egenskapen backing har ändrats från standardvärdet och ska serialiseras till designerns kod.

Följande kod returnerar true när egenskapen Direction inte är lika med None, vilket anger att en riktning har valts:

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

Exempel

Följande kod visar metoderna Reset och ShouldSerialize för egenskapen 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