Reset 및 ShouldSerialize를 사용하여 속성 제어(Windows Forms .NET)
이 문서에서는 Visual Studio에서 속성 창의 속성을 관리하는 Reset<PropertyName>
및 ShouldSerialize<PropertyName>
메서드를 만드는 방법을 알아봅니다. Reset
및 ShouldSerialize
는 속성에 간단한 기본값이 없는 경우 속성에 대해 제공할 수 있는 선택적 메서드입니다. 속성에 간단한 기본값이 있는 경우 DefaultValueAttribute을(를) 적용하고 대신 특성 클래스 생성자에 기본값을 제공해야 합니다. 이러한 메커니즘 중 하나를 사용하면 디자이너에서 다음 기능을 사용할 수 있습니다.
- 속성이 기본값에서 수정된 경우 속성 브라우저에서 시각적 표시를 제공합니다.
- 사용자는 속성을 마우스 오른쪽 단추로 클릭하고 초기화를 선택하여 속성을 기본값으로 복원할 수 있습니다.
- 디자이너는 보다 효율적인 코드를 생성합니다.
속성에 대한 자세한 내용은 Reset 및 ShouldSerialize를 참조하세요.
지원 코드
이 문서에서는 컴퍼스 로즈 컨트롤을 만드는 방식으로 Reset
및 ShouldSerialize
메서드를 보여 줍니다. 사용자 고유의 사용자 정의 컨트롤로 작업하는 경우 이 섹션을 건너뛸 수 있습니다.
코드에 다음 열거형을 추가합니다.
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
CompassRose
라는 사용자 정의 컨트롤을 추가합니다.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
속성에 대한 Reset
및 ShouldSerialize
메서드를 보여 줍니다.
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
.NET Desktop feedback