在本文中,您將了解如何建立 Reset<PropertyName> 和 ShouldSerialize<PropertyName> 方法,以管理 Visual Studio 中 [屬性] 視窗的屬性。 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的使用者控制項。將名為
Direction且類型為Directions的屬性新增至使用者控制項。public Directions Direction { get; set; } = Directions.None;Public Property Direction As Directions = Directions.None
重設
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