Tutorial C# – DataBindings e Serialization…
Olá a todos, e como hoje é segunda-feira cá estou eu para vos mostrar mais coisas sobre o fascinante mundo da programação e em particular do C#.
Hoje temos um tema muito interessante, simples e muito prático, vamos falar de DataBindings e Serialization.
O que são?
DataBindigs, permite-nos ligar qualquer propriedade de um controlo a uma propriedade de um Objecto, como vamos ver neste tutorial ligo a propriedade Text das TextBoxes ás propriedades da minha classe Pessoa.
Serialization, é uma funcionalidade excelente da framework .NET, possibilita que o estado de um objecto seja guardado e transportado para o mesmo programa, para outros programas e até outras plataformas.
O método Serialize converte um objecto num stream que pode ser em XML ou binário, este stream pode ficar alojado na máquina ou passado através de rede ou até mesmo Internet através de envelopes SOAP.
O processo inverso tem o nome de Deserialization e converte um stream em Objecto.
Passando então ao nosso programa: Este programa é um género de lista de pessoas com o respectivo detalhe, essa lista contém os nomes das pessoas que criamos, ao ser clicado num nome em baixo é mostrado o detalhe dessa pessoa.
Temos também a possibilidade de gravar as alterações em XML (Serialize) ou de fazer o load de um ficheiro previamente guardado (Deserialize).
1º passo: criar a classe:
Nesta temos então a novidade de ter de colocar o atributo [Serializable] no topo da classe, isto vai permitir fazer a serialização para um ficheiro XML.
2º Passo: Importar namespaces e criar a nossa Lista genérica (já falamos num post anterior)
A "List p = new List ();" é uma variável global para a podermos usar sempre no decorrer do programa.
3º Passo: Criar o interface
4º Passo: Clique do botão Ok na janela Adicionar pessoa
Ao fazer clique vamos instanciar um novo objecto da classe Pessoa e colocar o texto das TextBoxes nas propriedades Nome, Idade, Profissão. Vamos também passar para a variável/Propriedade NovaPessoa este novo objecto para ser possível depois aceder do ecrã principal, como vamos ver a seguir.
5º Passo: Clique do botão adicionar
Ao clicar neste botão aparece uma nova janela para inserir os dados de uma nova pessoa. Se o resultado dessa janela for ok (configuramos para que o botão tenha esse comportamento) adicionamos essa pessoa à lista, indo buscar os Dados da propriedade NovaPessoa da janela AdicionarPessoa.
Por fim chamamos o método bindDados.
6º Passo: bindDados
Aqui entra a magia do DataBindings. Estamos a dizer ás caixas de texto para ligarem a sua propriedade texto à respectiva propriedade da lista de Pessoas.
Infelizmente a listBox não permite isto logo tem de ser pela propriedade DataSource, e antes de adicionar a lista limpamos a data existente passando null.
Agora ao criar umas quantas pessoas, verão que ao subir e descer na lista os dados das textBoxes vão-se alterando.
Agora basta gravar as nossas alterações, para isso vamos usar o XMLSerializer.
7º Passo: XMLSerializer
No botão de serialize vamos gravar os dados para um ficheiro xml chamado testes. Criamos um TextWriter(poderiam ser outras mil opções) que serve para escrever um stream de dados para um ficheiro.
Criamos o XmlSerializer e dizemos que o tipo de dados que queremos serializar é a lista de pessoas. Depois é só chamar o método Serialize, passando o stream e o objecto. O resultado final será um ficheiro com a lista de pessoas que criaram.
O (Deserialize) serve para carregar esses dados de novo para a form. Abrimos um fileStream e lemos os dados do ficheiro teste.xml definimos o XmlSerialiser tal e qual como em cima depois temos de passar o resultado do método deserialize para a nossa lista de empregados.
Fechamos o stream, muito importante, e executamos o método bindDados.
E pronto criámos um programa que possibilita guardar dados sem recorrer a bases de dados e não sendo nada complicado.
Download: Código DataBindings e Serialization [141.61KB]
Espero que tenham gostado e para a semana vamos falar de dados e manipulação de dados com bases de dados, vamos falar de ADO.Net e de todo o ambiente desconectado, DataSets, DataTables.....
Cumprimentos e boa programação.
Licença: Freeware
Sistemas Operativos: Windows 2k/XP/Vista/Win7
Download: Peopleware Serialization 1.0 [16.04KB]
Homepage: Peopleware
Este artigo tem mais de um ano
Porreiro, desconhecia os databindings, faço as coisas todas à unha. 😛
porta-te mas é bem
Bom totutial… Mas o que eu gostava mesmo mesmo era de fazer conexão com base dados sql, para introduzir e ler dados….
se alguem souber de algo 😀
@Pedro Henriques
Dá uma olhadela no LINQ: http://msdn.microsoft.com/en-us/vcsharp/aa904594.aspx
_________________________________
Clube Manager Portugal – http://www.cmportugal.com
Muito bom! Sequência muito lógica e explicações com clareza. Parabéns pelo tutorial!
@ Pedro Henriques
Ligação a BD vou falar no próximo tutorial. Mas no fundo o que fazemos é isto definimos os databindings mas com interface gráfico.
@ Filipe Lourenço
Obrigado, antes de conhecer isto também era assim que fazia. O databindings serve para muita coisa.
Por exemplo para contar o numero de caracteres que tem uma textbox para uma label basta fazer isto:
label1.DataBindings.Add(“Text”, textBox1, “Text.Length”);
Para quem já usou WPF os databindings são usados com muita regularidade, senão sempre.
Muito bom o artigo. Mas em relação ao seu comentário:
“Por exemplo para contar o numero de caracteres que tem uma textbox para uma label basta fazer isto:
label1.DataBindings.Add(“Text”, textBox1, “Text.Length”);”
Entendi que isso serve para ser um contador de caracteres, mas ao tentar incluir no evento change do um textbox, não consegui o que queria. Não é possível executar isso em tempo de execução ou estou cometendo outro erro ?
E para quando uns posts de WCF . . . ?
Uma boa explicação vinha mesmo a calhar!
@Luis
Ah pois era 😛 dava msm jeito, WCF , entity model e WPF era qq coisa 😀
Peco dsc por n comentar este artigo mas ainda n tive tempo para dar uma vista de olhos com atencao.
Gostei, mas penso que ficaram os atributos de serialização XML de fora, que se tornam bastante necessários a curto prazo, como o XmlAttribute, o XmlIgnore, o XmlArray, etc.
Mas de resto penso que focaste o importante na serialização de objectos.
Outro ponto que não posso deixar de ressaltar e que é muito importante, é o de que estás a dar o mau exemplo aos programadores mais iniciados, ao não fazer Close e Dispose (ou usar o Using) das Streams e objectos que implementem IDispose 😉
Esta série de tutoriais parece-me muito importante, em especial para quem se quer iniciar na programação .NET, por isso continua com o bom trabalho! 🙂
Tenho uma questão: estava a experimentar esta aplicação e, mesmo entendendo muito pouco disto, deparei-me com um problema. Ao adicionar uma nova pessoa, a aplicacao faz o binding às textboxe’s e actualiza os dados com a pessoa seleccionada no ecrã (que foi a ultima a ser inserida), mas ao remover uma pessoa, os dados não são actualizados (apesar de ficar seleccionada em cima a anterior). è um problema destes bindings? ou há um truque para usar quando se removem dados? Como contornar isto?
Simplificando, o que quis dizer foi: se seleccionar o “Pedro” no exemplo que está no inicio deste post, e carregar em remover, passa a ficar o Vitor seleccionado (e bem), mas com os dados do Pedro nas textboxe’s… Qual a solução para este problema ou bug dos dataBindings?
Muito bom o tutorial.Está de parabéns.