Definindo valores padrão com o ShouldSerialize e métodos de reiniciar
ShouldSerialize e Reset são métodos opcionais que você pode fornecer para uma propriedade, se a propriedade não tem um valor padrão simples. Se a propriedade tiver um valor padrão simples, você deverá aplicar o DefaultValueAttribute e forneça o valor padrão para o construtor de classe de atributos em vez disso. Qualquer um desses mecanismos permite que os seguintes recursos no designer:
A propriedade fornece indicação visual no navegador da propriedade se ela tiver sido modificada em seu valor padrão.
O usuário pode clicar com o botão direito do mouse na propriedade e escolher reiniciar restauração a propriedade para seu valor padrão.
O designer gera um código mais eficiente.
Observação: Tanto aplicar a DefaultValueAttribute ou forneça ResetPropertyName and ShouldSerializePropertyName métodos.Não use ambos.
The 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 de Reset opção para essa propriedade é desabilitado no menu de atalho a Propriedades janela do Designer de Formulários do Windows Visual Studio. |
Designers, sistema autônomo Visual Studio Use o ShouldSerializePropertyName método para verificar se uma propriedade foi alterado de seu valor padrão e escrever código para o formulário somente se uma propriedade for alterado, possibilitando que para a 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;
}
}
Nesse caso, mesmo quando o valor da variável particular acessado pelo MyFont propriedade é null, o navegador de propriedade não é exibida null; em vez disso, ele exibe a Font propriedade de pai, se não for null, ou o padrão Font valor definido na Control. Assim, o valor padrão de MyFont não é possível conjunto simplesmente e um DefaultValueAttribute não pode ser aplicado a esta propriedade. Em vez disso, a ShouldSerialize e Reset métodos devem ser implementados para o MyFont propriedade.
Consulte também
Conceitos
Definindo uma propriedade em controles Windows Forms
Eventos de alteração de propriedade