Reset と ShouldSerialize を使用してプロパティを制御する (Windows フォーム .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
という名前のユーザー コントロールを追加します。Directions
型のDirection
という名前のプロパティを、ユーザー コントロールに追加します。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
.NET Desktop feedback