Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rgtl

Filtros com Combobox

Recommended Posts

Olá! Sou novo em programação e estrou criando um pequeno programa em VB.

 

O problema é o seguinte:

Quero criar alguns filtros com 3 ou mais Combobox. A medida que é selecionado as opções nos combobox a lista do Listbox vai sendo atualizada.

Por exemplo:

Combobox1: Lista o sexo: Qualquer, Masculino, Feminino;

Comobbox2: Lista o estado civil: qualquer, casado ou solteiro;

Combobox3: Lista o país que mora: brasil, eua

 

A medida que os items nos combobox são selecionados, o listbox é atualizado com os nomes das pessoas. Tentei fazer com If mas não funciona tao bem e o código fica gigantesco

 

Alguém tem alguma ideia para criar esse filtro?

PS: Se houver alguma forma de criar a lista de pessoas a partir de um txt no Resources ou banco de dados, seria melhor.

 

Sei que da forma que tentei fazer não é correta:

If opcao_Sexo.SelectedIndex = 0 Then 'qualquer selecionado
            opcao_box2.Items.Clear()
            opcao_box2.Items.Add("Qualquer")
            opcao_box2.Items.Add("Casado")
            opcao_box2.Items.Add("Solteiro")

            ListBox1.Items.Clear()
            ListBox1.Items.Add("João")
            ListBox1.Items.Add("Maria")
            ListBox1.Items.Add("Joana")
            ListBox1.Items.Add("Pedro")

        End If
.
.
.

If opcao_box2.SelectedIndex = 1 Then 'casado selecionado
            opcao_box2.Items.Clear()
            opcao_box2.Items.Add("Qualquer")
            opcao_box2.Items.Add("Casado")
            opcao_box2.Items.Add("Solteiro")

            ListBox1.Items.Clear()
            ListBox1.Items.Add("Joana") 'Listibox1 aparece só as pessoas que são casadas
            ListBox1.Items.Add("Pedro")

        End If

Desde já obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, deu certo, obrigado! Porém surge um problema. Estou tendo problemas com o Combobox.Items.Clear(). Ex: Eu defini para que se estiver selecionado "Qualquer" em um determinado combobox preciso que ele limpe e adicione novos itens ou re-adicione os itens padrão dependendo das opções escolhidas em outro combobox. Todos os comboboxes tem que ter a opção "Qualquer" como filtro. O Clear() limpa certinho, porém como ele limpa tudo depois é adicionado outra vez o Item "Qualquer" com os outros, tenho que selecionar o "Qualquer" para que o comando seja recebido pelo programa (If ComboBox1.SelectedItem = "Qualquer" Then). Já tentei usar SelectedItem = "Qualquer" e SelectedIndex = 0 mas não funciona pois causa um loop infinito. Resumindo: Se tiver alguma forma de limpar tudo menos o "Qualquer" acho que funcionaria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo só para ilustrar:

Combobox1: Lista os itens Homens, Mulheres e Animais (em um Listbox aparece todos os homens, mulheres e animais)

 

Combobox2: Lista o de onde é os homens, mulheres, e os animais (nomes dos países de cada pessoa, ou o nome de cada estado brasileiro que tem o animal. Assim o Listbox é atualizado) Qualquer, Brasil, EUA, Argentina ou SP, ES, RJ

 

Combobox3: Lista se é casado ou solteiro. (o Listbox filtra mais ainda) Qualquer, Casado(a), Solteiro(a)

 

- Se eu selecionar HOMENS ou MULHERES no Combobox1, então o Combobox2 é ativo, limpo e preenchido com as opções de países das pessoas Qualquer, Brasil, EUA, Argetina;
O combobox3 é ativo, limpo e preenchido com as opções Qualquer, Casado(a), Solteiro(a)

- Se eu selecionar ANIMAIS no Combobox1 é ativada somente o Combobox2 listando o estado do animal, e é inativo o Combobox3, pois não há necessidade de ser utilizado nesse caso. Qualquer SP, ES, RJ

Porém notei que acontece isso: Seleciono "Homens". Os comboboxes2 e 3 são ativos, limpos e preenchidos normalmente. Quando vou para "Animais" não acontece nada, tenho que clicar no Combobox2, na opção "Qualquer" para que o case seja ativo (selecionado) e funcione o código.

Resumindo, descobri que o problema parece ser o Clear() que limpa os comboboxes que tem a opção "Qualquer". Essa opção "Qualquer é o gatilho do case. Por que eu fiz pra limpar sempre que é selecionado? Por que os itens do Combobox2 é diferente conforme é selecionado a opção do Combobox1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.