none
combobox RRS feed

Respostas

  • Ricardo,

    Quando definimos a propriedade DataSource para os controles que herdam a classe abstrata ListControl (ListBox, ComboBox e outros) estamos realizando o que chamamos de data binding, que é o mecanismo pelo qual a informação contida em objetos é associada com controles da interface com o usuário.

    Podemos atribuir a propriedade DataSource a qualquer objeto que implementa as interfaces IList ou IListSource. Exemplos comuns são o DataSet, Array, ArrayList e outros.

    A propriedade DisplayMember especifica o nome da propriedade do objeto contido na coleção especificada pela propriedade DataSource que desejamos que seja mostrada pelo ListControl. Já a propriedade ValueMember seria o nome da propriedade do objeto, também contido na coleção da propriedade DataSource, que representa o valor atual dos itens de um ListControl.

    Por exemplo, digamos que você tenha uma classe que chamada Cliente e que possua as propriedades CodigoCliente e Nome. Suponhamos que exista um array de objetos da classe Cliente que desejamos mostrar em um controle ListBox, digamos que o array represente nossos dados que podem ser oriundos de qualquer fonte de dados.

    Definimos então a propriedade DataSource do ListBox como sendo o array de objetos, a propriedade DisplayMember como sendo a propriedade Nome da classe Cliente e a propriedade ValueMember como sendo a propriedade CodigoCliente da classe Cliente.

    seuListBox.DataSource = seuArrayClientes
    seuListBox.DisplayMember = "Nome"
    seuListBox.ValueMember = "CodigoCliente"


    Assim, o ListBox irá mostrar somente os nomes dos clientes. Se um dos itens do ListBox é selecionado (um cliente é selecionado) e desejamos saber o seu código, utilizamos a propriedade SelectedValue do ListBox.

    codigoClienteSelecionado = seuListBox.SelectedValue

    O meu exemplo foi bem simples e demonstrou o data binding do tipo complexo (complex binding ou list-based binding). Sugiro que leia o link abaixo, já que esse é um assunto um tanto grande para ser explicado somente em um post.

    Windows Forms Data Binding
    http://msdn.microsoft.com/en-us/library/ef2xyb33.aspx

    Espero ter sido claro e ter ajudado em sua dúvida.

    Att.

    Ari C. Raimundo
    sexta-feira, 11 de dezembro de 2009 00:40