Demonstra Passo a passo: Serializar coleções de tipos padrão com o DesignerSerializationVisibilityAttribute
sistema autônomo controles personalizados, às vezes, expõe uma coleção sistema autônomo uma propriedade.Esta explicação passo a passo demonstra como usar o DesignerSerializationVisibilityAttribute classe para controle como uma coleção é serializada em time de design. Aplicando o Content valor de propriedade de coleção garante que a propriedade será serializada.
Para copiar o código deste tópico como uma única lista, consulte Como: Serializar coleções de tipos padrão com o DesignerSerializationVisibilityAttribute.
Observação: |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio. |
Pré-requisitos
A fim de concluir este explicação passo a passo, será necessário:
- Dê permissões suficientes para poder criar e executar projetos de aplicativos de Formulários do Windows no computador onde o Visual Studio está instalado.
Criando um controle que tem uma coleção Serializable
A primeira etapa é criar um controle que tem uma coleção pode ser serializada sistema autônomo uma propriedade.Você pode edição o Sumário desta coleção usando o Editor de coleção, que você pode acessar a partir de Propriedades janela.
Para criar um controle com uma coleção serializável
Criar um projeto Windows controle biblioteca chamado SerializationDemoControlLib.Para obter mais informações, consulte Modelo de Biblioteca de controle do Windows.
Renomear UserControl1 para SerializationDemoControl. Para obter mais informações, consulte Como: Renomear identificadores.
No Propriedades janela, conjunto o valor de Padding.All propriedade para 10.
Coloque um TextBox controlar no SerializationDemoControl.
Selecione o controle TextBox.No Propriedades janela, defina as propriedades a seguir.
Propriedade
Alterar para
Multiline (de múltiplas linhas)
true
Dock
ScrollBars
Readonly
true
No Editor de código, declara um campo de matriz de seqüência de caracteres denominado stringsValue em SerializationDemoControl.
' This field backs the Strings property. Private stringsValue(1) As String
// This field backs the Strings property. private String[] stringsValue = new String[1];
// This field backs the Strings property. private: array<String^>^ stringsValue;
Definir o Strings propriedade no SerializationDemoControl.
Observação: |
---|
O Content valor é usado para habilitar a serialização da coleção. |
' When the DesignerSerializationVisibility attribute has
' a value of "Content" or "Visible" the designer will
' serialize the property. This property can also be edited
' at design time with a CollectionEditor.
<DesignerSerializationVisibility( _
DesignerSerializationVisibility.Content)> _
Public Property Strings() As String()
Get
Return Me.stringsValue
End Get
Set(ByVal value As String())
Me.stringsValue = Value
' Populate the contained TextBox with the values
' in the stringsValue array.
Dim sb As New StringBuilder(Me.stringsValue.Length)
Dim i As Integer
For i = 0 To (Me.stringsValue.Length) - 1
sb.Append(Me.stringsValue(i))
sb.Append(ControlChars.Cr + ControlChars.Lf)
Next i
Me.textBox1.Text = sb.ToString()
End Set
End Property
// When the DesignerSerializationVisibility attribute has
// a value of "Content" or "Visible" the designer will
// serialize the property. This property can also be edited
// at design time with a CollectionEditor.
[DesignerSerializationVisibility(
DesignerSerializationVisibility.Content )]
public String[] Strings
{
get
{
return this.stringsValue;
}
set
{
this.stringsValue = value;
// Populate the contained TextBox with the values
// in the stringsValue array.
StringBuilder sb =
new StringBuilder(this.stringsValue.Length);
for (int i = 0; i < this.stringsValue.Length; i++)
{
sb.Append(this.stringsValue[i]);
sb.Append("\r\n");
}
this.textBox1.Text = sb.ToString();
}
}
// When the DesignerSerializationVisibility attribute has
// a value of "Content" or "Visible" the designer will
// serialize the property. This property can also be edited
// at design time with a CollectionEditor.
public:
[DesignerSerializationVisibility(
DesignerSerializationVisibility::Content)]
property array<String^>^ Strings
{
array<String^>^ get()
{
return this->stringsValue;
}
void set(array<String^>^ value)
{
this->stringsValue = value;
// Populate the contained TextBox with the values
// in the stringsValue array.
StringBuilder^ sb =
gcnew StringBuilder(this->stringsValue->Length);
for (int i = 0; i < this->stringsValue->Length; i++)
{
sb->Append(this->stringsValue[i]);
sb->Append(Environment::NewLine);
}
this->demoControlTextBox->Text = sb->ToString();
}
}
Observação: |
---|
As seqüências de caracteres que você digitou são exibidos na TextBox da SerializationDemoControl. |
Serializando uma propriedade de coleção
Para testar o comportamento de serialização do seu controle, você irá colocá-lo em um formulário e alterar o Sumário da coleção com o Editor de coleção.Você pode ver o serializado coleção estado examinando um arquivo especial do designer, no qual o Designer de Formulários do Windows emite código.
Para serializar uma coleção
Adicione um projeto Windows aplicativo à solução.Para obter mais informações, consulte Caixa de Diálogo Add New Project. Nomeie o projeto SerializationDemoControlTest.
No Caixa de ferramentas, na guia chamado findComponentes SerializationDemoControlLib.Nessa guia, você encontrará o SerializationDemoControl. Para obter mais informações, consulte Demonstra Passo a passo: Preenchendo automaticamente a caixa de ferramentas com componentes personalizados.
Coloque um SerializationDemoControl no formulário.
Localizar o Strings propriedade no Propriedades janela.clicar no Strings propriedade, em seguida, clicar na reticências ()) botão para em aberto o String coleção Editor.
Digite o várias cadeias de caractereseditor de conjunto de cadeia de caracteres.Separe-as pressionando a tecla ENTER no participante de cada seqüência de caracteres.clicar OK quando tiver terminado de inserir seqüências de caracteres.
Observação: |
---|
As seqüências de caracteres que você digitou são exibidos na TextBox da SerializationDemoControl. |
In O gerenciador de soluções, clicar no Mostrar todos os arquivos botão.
Abra o Form1 nó.Posterior é um arquivo chamado Form1.Designer.cs or Form1.Designer.vb.Este é o arquivo no qual o Designer de Formulários do Windows emite código que representa o estado de time de design de formulário e seus controles filho.em em aberto este arquivo no Editor de código.
em em aberto a região chamada Código gerado pelo Windows formulário Designer e localizar a seção denominada serializationDemoControl1.Sob esse rótulo é o código que representa o estado do seu controle serializado.As seqüências de caracteres digitada na etapa 5 aparecem em uma atribuição para o Strings propriedade. O exemplo de código a seguir mostra o código semelhante ao que você verá se você digitou as seqüências de caracteres "vermelho", "laranja" e "amarelo".
[Visual Basic]
Me.serializationDemoControl1.Strings = New String() {"red", "orange", "yellow"}
[C#]
this.serializationDemoControl1.Strings = new string[] { "red", "orange", "yellow"};
No Editor de código, altere o valor do DesignerSerializationVisibilityAttribute sobre o Strings propriedade para Hidden.
[Visual Basic]
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
[C#]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Recrie a solução e Repetir as etapas 4 a 8.
Observação: |
---|
Nesse caso, o Designer de Formulários do Windows não emite nenhuma atribuição para o Strings propriedade. |
Próximas etapas
Depois que você souber como serializar uma coleção de tipos padrão, considere a possibilidade de integrar seus controles personalizados mais profundamente o ambiente de time de design.Os tópicos a seguir descrevem como aperfeiçoar a integração do time de design de seus controles personalizados:
Consulte também
Tarefas
Como: Serializar coleções de tipos padrão com o DesignerSerializationVisibilityAttribute
Conceitos
Designer Serialization Overview