다음을 통해 공유


Reset 및 ShouldSerialize를 사용하여 속성 제어(Windows Forms .NET)

이 문서에서는 Visual Studio에서 속성 창의 속성을 관리하는 Reset<PropertyName>ShouldSerialize<PropertyName> 메서드를 만드는 방법을 알아봅니다. ResetShouldSerialize는 속성에 간단한 기본값이 없는 경우 속성에 대해 제공할 수 있는 선택적 메서드입니다. 속성에 간단한 기본값이 있는 경우 DefaultValueAttribute을(를) 적용하고 대신 특성 클래스 생성자에 기본값을 제공해야 합니다. 이러한 메커니즘 중 하나를 사용하면 디자이너에서 다음 기능을 사용할 수 있습니다.

  • 속성이 기본값에서 수정된 경우 속성 브라우저에서 시각적 표시를 제공합니다.
  • 사용자는 속성을 마우스 오른쪽 단추로 클릭하고 초기화를 선택하여 속성을 기본값으로 복원할 수 있습니다.
  • 디자이너는 보다 효율적인 코드를 생성합니다.

속성에 대한 자세한 내용은 Reset 및 ShouldSerialize를 참조하세요.

지원 코드

이 문서에서는 컴퍼스 로즈 컨트롤을 만드는 방식으로 ResetShouldSerialize 메서드를 보여 줍니다. 사용자 고유의 사용자 정의 컨트롤로 작업하는 경우 이 섹션을 건너뛸 수 있습니다.

  1. 코드에 다음 열거형을 추가합니다.

    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. CompassRose라는 사용자 정의 컨트롤을 추가합니다.

  3. Directions 형식의 Direction이라는 속성을 사용자 정의 컨트롤에 추가합니다.

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

Reset

Reset<PropertyName> 메서드는 해당 <PropertyName> 속성을 기본값으로 다시 설정합니다.

다음 코드는 Direction 속성을 None으로 다시 설정하며, 이는 컴퍼스 로즈 컨트롤의 기본값으로 인식됩니다.

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

ShouldSerialize

ShouldSerialize<PropertyName> 메서드는 백업 속성이 기본값에서 변경되어 디자이너의 코드로 직렬화되어야 하는지 여부를 나타내는 부울 값을 반환합니다.

다음 코드는 Direction 속성이 None과 같지 않으면 방향을 선택했음을 나타내는 true를 반환합니다.

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

예시

다음 코드에서는 Direction 속성에 대한 ResetShouldSerialize 메서드를 보여 줍니다.

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