VB .NET - Transferindo valores entre duas ListBox
Nesta dica vamos ver como transferir itens selecionados entre dois controles ListBox em uma aplicação VB .NET.
Crie um novo projeto usando o Visual Basic 2010 Express Edition: Menu File -> New Project;
Selecione o template Windows Forms Application com o nome : TransferindoItensEntreListBox
A seguir inclua os seguintes controles no formulário form1.vb:
Vamos incluir no evento Click de cada um dos botões de comando o código que irá permitir selecionar e transferir itens entre os controles ListBox.
1 - Evento Click do botão - btnA:
Private
Sub btnA_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnA.Click Dim i As Integer = 0 For i = 0 To lsbA.SelectedItems.Count - 1 lsbB.Items.Add(lsbA.SelectedItem) lsbA.Items.RemoveAt(lsbA.SelectedIndex) Next End Sub |
2- Evento Click do botão = btnB
Private
Sub btnB_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnB.Click Dim i As Integer = 0 For i = 0 To lsbB.SelectedItems.Count - 1 lsbA.Items.Add(lsbB.SelectedItem) lsbB.Items.RemoveAt(lsbB.SelectedIndex) Next End Sub |
Executando o projeto e selecionando um item no primeiro ListBox, após clicar no botão > , o item será transferido para o segundo ListBox:
Podemos selecionar mais de um item. É o que fizemos no segundo ListBox , transferindo os valores para o primeiro:
Preenchendo o ListBox com um DataTable
Vamos mostrar agora como preencher um controle ListBox com os dados de um tabela de um banco de dados.
Eu vou usar a tabela Products do banco de dados Northwind.mdb (Microsoft Access) mas o código é igual para qualquer banco de dados , o que muda é a string de conexão.
Vamos preencher o ListBox com o nome do produto criando uma rotina chamada preencheLista:
Protected
Sub preencheLista() 'define a string de conexão e a instrução SQL Dim STR_CON As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\dados\Northwind.mdb" Dim STR_SQL As String = "Select ProductID,ProductName From Products" 'abre a conexão e cria o datatable Using conn As New OleDbConnection(STR_CON) Using da As New OleDbDataAdapter(STR_SQL, STR_CON) Dim dt As New DataTable() da.Fill(dt) ' 1. Exibe o nome do Produto e Obtem o seu ID na seleção lsbA.DisplayMember = dt.Columns(1).ColumnName lsbA.ValueMember = dt.Columns(0).ColumnName ' 2. define o DataSource lsbA.DataSource = dt End Using End Using End Sub |
Você pode chamar essa rotina de onde desejar. O resultado pode ser visto na figura abaixo:
Pegue o projeto completo aqui: TransferindoValoresEntreListboxVBNET.zip
"Mas a hora vem, e agora é, em que os verdadeiros adoradores adorarão o Pai em espírito e em verdade: porque o Pai procura a tais que assim o adorem."(João:4-23)
Referências: