使用 Reset 和 ShouldSerialize 來控制屬性 (Windows Forms .NET)
在本文中,您將了解如何建立 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
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