Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

pedrologin

Ocultar valores das Combobox

Mensagens Recomendadas

pedrologin    0
pedrologin

Boas pessoal.

Tenho duas combobox de 1 a 8 valores, e quero fazer algo assim: quando seleciono o valor 8 na combobox1 só é premitido selecionar até 2 valores na combobox2; quando seleciono o valor 7 na combobox1 só é possivel selecionar até 3 valores na combobox2; e vice versa.

Como faço para ocultar os valores da combobox para que o utilizador não os passa usar?

Cumprimentos pedro

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrologin    0
pedrologin

Eu não sei bem como se faz isso, mas o melhor que consegui foi apresentar os valores na combobox1, mas na combobox2 nada aparece. :D

 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        

            ComboBox1.Items.Insert(0, 5)
            ComboBox1.Items.Insert(1, 6)
            ComboBox1.Items.Insert(2, 7)
            ComboBox1.Items.Insert(3, 8)
            ComboBox1.Items.Insert(4, 9)
            ComboBox1.Items.Insert(5, 10)
            ComboBox1.Items.Insert(6, 11)

        Dim comb1 As String
        If ComboBox1.SelectedIndex <> -1 Then
            comb1 = ComboBox1.SelectedItem.ToString


            If comb1 = 11 Then
                ComboBox2.Items.Insert(0, 1)
                ComboBox2.Items.Insert(1, 2)


                If comb1 = 10 Then
                    ComboBox2.Items.Insert(0, 1)
                    ComboBox2.Items.Insert(1, 2)
                    ComboBox2.Items.Insert(2, 3)

                    If comb1 = 10 Then
                        ComboBox2.Items.Insert(0, 1)
                        ComboBox2.Items.Insert(1, 2)
                        ComboBox2.Items.Insert(2, 3)
                        ComboBox2.Items.Insert(3, 4)
                    End If
                End If
            End If
        End If
    End Sub
End Class

cumprimentos

EDIT: Geshi adicionado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrologin    0
pedrologin

Não percebo obamaself, desta maneira tambem não funciona.

Tenho que experimentar outra coisa.

Public Class Form1

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ComboBox1.Items.Insert(0, 5)
        ComboBox1.Items.Insert(1, 6)
        ComboBox1.Items.Insert(2, 7)
        ComboBox1.Items.Insert(3, 8)
        

        Dim comb1 As String
        comb1 = ComboBox1.Text
        If comb1 = "8" Then
            ComboBox2.Items.Insert(0, 1)
            ComboBox2.Items.Insert(1, 2)


            If comb1 = "7" Then
                ComboBox2.Items.Insert(0, 1)
                ComboBox2.Items.Insert(1, 2)
                ComboBox2.Items.Insert(2, 3)
                If comb1 = "6" Then
                    ComboBox2.Items.Insert(0, 1)
                    ComboBox2.Items.Insert(1, 2)
                    ComboBox2.Items.Insert(2, 3)
                    ComboBox2.Items.Insert(3, 4)
                End If
            End If
        End If
    End Sub
End Class

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

O código deve ser colocado no evento SelectedIndexChanged da combobox 1

@pedrologin

Só no SelectedIndexChanged te é garantido que o handler vai correr sempre que for verificada uma alteração no índice da selecção.

Estás a colocar tudo no Load do form....

As verificações como as tens têm de ser feitas no SelectedIndexChanged da combobox1, para que possam afectar a combobox2 sempre que o índice da selecção da combobox1 altera.

Será boa ideia também limpares os items primeiro, senão são simplesmente acrescentados.

Não percebi bem a tua intenção, e não posso julgar o código a que chegaste.

EDIT: Podes também extender a combobox e criares métodos para esconder e mostrar o que te convém.

Só deves, no entanto, pensar nisto depois de entenderes o que te foi explicado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Além de que o código está errado, aquelas condições não estão encadeadas. Talvez será melhor utilizares um Select Case para melhor percepção do código.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrologin    0
pedrologin

Quero agradecer a todos pela ajuda, de fato eu tinha alguns erros como, usar o codigo todo na form, usar if em vez de elseif e tambem esqueci-me de limpar a combobox, pois tava sempre a adicionar numeros uns em cima das outros.lol.

Está resolvido

Viva o portugal-a-programar. :cheesygrin:

Cumprimentos

If comb1 = "8" Then
            ComboBox2.Items.Clear()
            ComboBox2.Items.Insert(0, 1)


        ElseIf comb1 = "7" Then
            ComboBox2.Items.Clear()
            ComboBox2.Items.Insert(0, 1)
            ComboBox2.Items.Insert(1, 2)

        ElseIf comb1 = "6" Then
            ComboBox2.Items.Clear()
            ComboBox2.Items.Insert(0, 1)
            ComboBox2.Items.Insert(1, 2)
            ComboBox2.Items.Insert(2, 3)
End If

EDIT: Geshi adicionado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade