quarta-feira, 9 de março de 2011

Carregar um CheckedListBox usando uma fonte de dados

Olá, pessoal.

Escrevi um outro artigo, que demonstra como preencher um controle CheckedListBox em linguagem C#, usando dados fictícios e sem a utilização de um DataSource. Já neste artigo, vamos ver como alimentar o mesmo controle usando uma classe de negócios, que vai ser a nossa fonte de dados (poderia ser uma base de dados).

Crie um novo projeto do tipo Windows Forms Application no Visual Studio (File > New > Project) em linguagem VB.NET.


Com o projeto criado, vamos adicionar uma classe (Project > Add Class) e nomeá-la para ProdutoBLL.
Codifique a classe criada com a listagem abaixo.


Namespace Controller
    Public Class ProdutoBLL
        Public Shared Function ListarProduto() As List(Of Produto)
            Dim _lista As New List(Of Produto)
            _lista.Add(New Produto(1, "Produto Teste 1"))
            _lista.Add(New Produto(2, "Produto Teste 2"))
            _lista.Add(New Produto(3, "Produto Teste 3"))
            Return _lista
        End Function
    End Class

    Public Class Produto
        Private _codigo As Integer
        Private _descricao As String

        Public Sub New()
        End Sub

        Public Sub New(ByVal codigo As Integer, ByVal descricao As String)
            Me.Codigo = codigo
            Me.Descricao = descricao
        End Sub

        Public Property Codigo() As Integer
            Get
                Return _codigo
            End Get
            Set(ByVal value As Integer)
                _codigo = value
            End Set
        End Property

        Public Property Descricao() As String
            Get
                Return _descricao
            End Get
            Set(ByVal value As String)
                _descricao = value
            End Set
        End Property
    End Class
End Namespace

Perceba que criamos uma outra classe (de modelo) com duas propriedades e dois métodos construtores.
Além disso, criamos um método estático que retorna uma coleção de Produtos que será utilizado para alimentar o CheckedListBox.

Voltando para o Form da aplicação, adicione um controle CheckedListBox e um Button. Não é necessário alterar a propriedade Name dos controles.

Pressione a tecla de atalho F7 para acessarmos o View Code. Implemente o formulário com a listagem de código abaixo.

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CheckedListBox1.DataSource = Controller.ProdutoBLL.ListarProduto()
        CheckedListBox1.DisplayMember = "Descricao"
        CheckedListBox1.ValueMember = "Codigo"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 0 To CheckedListBox1.CheckedItems.Count - 1
            MessageBox.Show(CType(CheckedListBox1.CheckedItems(i), Controller.Produto).Codigo)
        Next
    End Sub
End Class

No código acima, já codificamos também o evento Click do controle Button. Caso encontre alguma dificuldade neste trecho, volte para o Design do Form e dê um duplo-clique sobre o controle. Desta forma, o Visual Studio se encarrega de gerar a declaração do evento Click do botão. Ainda no escopo do evento Click, tivemos que utilizar a função CType para converter o item selecionado da iteração para um objeto da classe Produto. Sendo assim, conseguimos ter acesso a propriedade Codigo do objeto.

Um outro ponto importante, é a utilização das propriedades DisplayMember, que recebe o nome do campo que contém a descrição do produto e a ValueMember, que recebe o código do produto. Testando a aplicação, marque algum produto da listagem e clique no Button para obter o código do produto selecionado.


Seja usando uma fonte de dados ou não, conseguimos alimentar um controle CheckedListBox e ainda recuperar as informações pré-selecionadas pelo usuário.

Fico por aqui.
Até o próximo artigo!

Nenhum comentário:

Postar um comentário

Deixe aqui seu comentário