Definindo os valores padrão com o ShouldSerialize e redefinir métodos
ShouldSerializee Reset são métodos opcionais que você pode fornecer para uma propriedade, se a propriedade não tem uma valor padrão simple. Se a propriedade tem um valor padrão simples, você deverá aplicar o DefaultValueAttribute e fornecer o valor padrão para o construtor de classe de atributo em vez disso. Qualquer um desses mecanismos permite que os seguintes recursos no designer:
A propriedade fornece uma indicação visual no navegador de propriedades se ele tiver sido modificado em seu valor padrão.
O usuário pode com o botão direito sobre a propriedade e escolha Redefinir para restaurar a propriedade para o valor padrão.
O designer gera um código mais eficiente.
Observação Ou aplicar o DefaultValueAttribute ou fornecer ResetPropertyName e ShouldSerializePropertyName métodos. Não use ambos.
O ResetPropertyName método define uma propriedade para o valor padrão, conforme mostrado no fragmento de código a seguir.
Public Sub ResetMyFont()
MyFont = Nothing
End Sub
public void ResetMyFont() {
MyFont = null;
}
Observação |
---|
Se uma propriedade não tiver um Reset método, não é marcado com um DefaultValueAttributee não tem um valor padrão fornecido na sua declaração, o Reset opção para essa propriedade está desabilitada no menu de atalho da Propriedades janela do Windows Forms Designer no Visual Studio. |
Designers como Visual Studio usar o ShouldSerializePropertyName método para verificar se uma propriedade foi alterado de seu valor padrão e escrever código para se o formulário uma propriedade for alterado, permitindo assim para geração de código mais eficiente. Por exemplo:
'Returns true if the font has changed; otherwise, returns false.
' The designer writes code to the form only if true is returned.
Public Function ShouldSerializeMyFont() As Boolean
Return Not (thefont Is Nothing)
End Function
// Returns true if the font has changed; otherwise, returns false.
// The designer writes code to the form only if true is returned.
public bool ShouldSerializeMyFont() {
return thefont != null;
}
Segue um exemplo de código completo.
Option Explicit
Option Strict
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Public Class MyControl
Inherits Control
' Declare an instance of the Font class
' and set its default value to Nothing.
Private thefont As Font = Nothing
' The MyFont property.
Public Property MyFont() As Font
' Note that the Font property never
' returns null.
Get
If Not (thefont Is Nothing) Then
Return thefont
End If
If Not (Parent Is Nothing) Then
Return Parent.Font
End If
Return Control.DefaultFont
End Get
Set
thefont = value
End Set
End Property
Public Function ShouldSerializeMyFont() As Boolean
Return Not (thefont Is Nothing)
End Function
Public Sub ResetMyFont()
MyFont = Nothing
End Sub
End Class
using System;
using System.Windows.Forms;
using System.Drawing;
public class MyControl : Control {
// Declare an instance of the Font class
// and set its default value to null.
private Font thefont = null;
// The MyFont property.
public Font MyFont {
// Note that the MyFont property never
// returns null.
get {
if (thefont != null) return thefont;
if (Parent != null) return Parent.Font;
return Control.DefaultFont;
}
set {
thefont = value;
}
}
public bool ShouldSerializeMyFont() {
return thefont != null;
}
public void ResetMyFont() {
MyFont = null;
}
}
Neste caso, mesmo quando o valor da variável particular acessado pela MyFont é a propriedade null, o Pesquisador de propriedade não exibe null; em vez disso, ele exibe o Font a propriedade do pai, se não for null, ou o padrão Font valor definido em Control. Assim, o valor padrão para MyFont não pode ser simplesmente definida e um DefaultValueAttribute não pode ser aplicado a esta propriedade. Em vez disso, o ShouldSerialize e Reset métodos devem ser implementados para o MyFont propriedade.
Consulte também
Conceitos
Definindo uma propriedade em controles do Windows Forms
Eventos de propriedade alterada