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