Używanie funkcji Reset i ShouldSerialize do kontrolowania właściwości (Windows Forms .NET)

Z tego artykułu dowiesz się, jak utworzyć Reset<PropertyName> metody i ShouldSerialize<PropertyName> do zarządzania właściwością okna Właściwości w programie Visual Studio. Reset i ShouldSerialize to opcjonalne metody, które można podać dla właściwości, jeśli właściwość nie ma prostej wartości domyślnej. Jeśli właściwość ma prostą wartość domyślną, należy zamiast tego zastosować DefaultValueAttribute wartość domyślną i podać jej wartość domyślną do konstruktora klasy atrybutów. Jeden z tych mechanizmów umożliwia korzystanie z następujących funkcji w projektancie:

  • Właściwość udostępnia wizualne wskazanie w przeglądarce właściwości, jeśli została zmodyfikowana z jej wartości domyślnej.
  • Użytkownik może kliknąć prawym przyciskiem myszy właściwość i wybrać polecenie Resetuj , aby przywrócić właściwość do jej wartości domyślnej.
  • Projektant generuje bardziej wydajny kod.

Aby uzyskać więcej informacji na temat właściwości, zobacz Reset i ShouldSerialize.

Kod pomocniczy

W tym artykule przedstawiono Reset metody i ShouldSerialize przez utworzenie kontrolki róży kompasu. Jeśli pracujesz z własną kontrolką użytkownika, możesz pominąć tę sekcję.

  1. Dodaj następujące wyliczenie do kodu:

    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. Dodaj kontrolkę użytkownika o nazwie CompassRose.

  3. Dodaj właściwość o nazwie Direction typu Directions do kontrolki użytkownika.

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

Reset

Metoda Reset<PropertyName> resetuje odpowiednią <PropertyName> właściwość do jej wartości domyślnej.

Poniższy kod resetuje Direction właściwość do None, która jest uznawana za wartość domyślną dla kontrolki kompasu róży:

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

ShouldSerialize

Metoda ShouldSerialize<PropertyName> zwraca wartość logiczną wskazującą, czy właściwość backing została zmieniona na wartość domyślną i powinna zostać serializowana w kodzie projektanta.

Poniższy kod zwraca wartość true, gdy Direction właściwość nie jest równa None, co wskazuje, że wybrano kierunek:

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

Przykład

Poniższy kod przedstawia Reset metody i ShouldSerialize dla Direction właściwości :

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