none
Habilitar o deshabilitar un combobox

    Pregunta

  • Hola chic@s nuevamente solicito de su ayuda, verán estoy realizando un formulario y tengo varias combobox sin embargo necesito que una en especifico se habilite o des habilite dependiendo del valor de otra.

    es decir que cuando por ejemplo el valor seleccionado sea "c" la otra combo se habilite y cuando no sea así se des habilite

    De antemano muchas gracias 

    jueves, 16 de marzo de 2017 22:52

Respuestas

  • CopyRight Man,

    Fíjate en la firma del procedimiento de tipo Sub 'ComboSegmento_SelectedIndexChanged', es un procedimiento como cualquier otro, que no está vinculado a ningún evento porque te falta indicar la instrucción Handles

    Private Sub ComboSegmento_SelectionChangeCommited(...) Handles ComboSegmento.SelectionChangeCommited
    

    Handles permite indicar que el procedimiento está vinculado a un evento de control, ¿a cuál? pues al -o a los que- especificas luego de la instrucción Handles, en ese contexto el nombre del procedimiento podría ser cualquier otro, lo que importa es el vinculo del evento del control al procedimiento.

    Private Sub MiProcedimiento(...) Handles ComboSegmento.SelectionChangeCommited


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta CopyRight Man viernes, 17 de marzo de 2017 15:30
    viernes, 17 de marzo de 2017 0:11

Todas las respuestas

  • CopyRight Man,

    Puedes escribir código en el evento 'SelectionChangeCommitted' que se produce cuando se selecciona un elemento de la lista.

    Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) 
    
    	'Activar/desactivar según el resultado de la expresión
    	ComboBox2.Enabled = ComboBox1.Text = "C"
    
    End Sub


    Imagino que inicializas la propiedad Enabled a False del objeto ComboBox2 (puede ser en el evento Load del formulario).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.


    jueves, 16 de marzo de 2017 23:04
  • Hola william, muchas gracias por tu ayuda estoy intentando con el código que me proporcionaste, y me surgió una duda y creo me falto especificar, ya que los valores que tiene mi combobox1 los estoy llamando desde otra base mediante el datasource y el dato que recibo es el id por lo tanto en lugar de .text seria selectedvalue? 

    Perdona si no me doy a entender 

    jueves, 16 de marzo de 2017 23:14
  • CopyRight Man,

    Claro, tú decides de donde obtienes el valor que deseas comparar.

    ¿El valor a comparar es el que está contenido en la propiedad ValueMember? entonces debes utilizar la propiedad SelectedValue para obtener el valor a comparar.

    ComboBox2.Enabled = ComboBox1.SelectedValue.ToString = "C"
    



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 16 de marzo de 2017 23:25
  • Genial william y de esta otra manera también funcionaria?

      Private Sub ComboCentro_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs)

            If ComboCentro.SelectedValue.ToString = "C" Then
                ComboSub.Enabled = True
            Else
                ComboSub.Enabled = False

            End If

        End Sub

    jueves, 16 de marzo de 2017 23:28
  • CopyRight Man,

    Fíjate que tienes en la instrucción If la expresión (ComboCentro.SelectedValue.ToString = "C") que según resulte True o False ingresará al flujo normal o al Else. En el código proporcionado la expresión (ComboCentro.SelectedValue.ToString = "C") dará como resultado True o False, dicho valor resultante será asignado a la propiedad Enabled

    ComboBox2.Enabled = ComboBox1.SelectedValue.ToString = "C"
    'Si la evaluación resulta True entonces la expresión resulta como:
    ComboBox2.Enabled = True
    


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 16 de marzo de 2017 23:33
  • Oh ya veo; ya modifique el código sin embargo al momento de correr el programa y seleccionar cualquier otro valor no se des habilita el combosub en este caso
    jueves, 16 de marzo de 2017 23:38
  • ¿La selección la realizas desplegando la lista y escogiendo un elemento? si es así no veo porque no se cumple la condición. De ser que la selección la realizas mediante código entonces debes de utilizar el evento 'SelectedIndexChanged' en lugar del evento 'SelectionChangeCommitted'.

    jueves, 16 de marzo de 2017 23:44
  • Así es la selección la realizo desplegando una lista y escogiendo un elemento de la misma, ya lo intente de ambas maneras y el otro combo sigue sin des habilitarse te comparto esa porción de código tal vez este haciendo algo mal (muy seguramente)

    Private Sub ComboSegmento_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)

            ComboSub.Enabled = ComboSegmento.SelectedValue.ToString = "C"
        End Sub

    Agradezco mucho el apoyo que me has brindado

    jueves, 16 de marzo de 2017 23:54
  • CopyRight Man,

    Fíjate en la firma del procedimiento de tipo Sub 'ComboSegmento_SelectedIndexChanged', es un procedimiento como cualquier otro, que no está vinculado a ningún evento porque te falta indicar la instrucción Handles

    Private Sub ComboSegmento_SelectionChangeCommited(...) Handles ComboSegmento.SelectionChangeCommited
    

    Handles permite indicar que el procedimiento está vinculado a un evento de control, ¿a cuál? pues al -o a los que- especificas luego de la instrucción Handles, en ese contexto el nombre del procedimiento podría ser cualquier otro, lo que importa es el vinculo del evento del control al procedimiento.

    Private Sub MiProcedimiento(...) Handles ComboSegmento.SelectionChangeCommited


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta CopyRight Man viernes, 17 de marzo de 2017 15:30
    viernes, 17 de marzo de 2017 0:11
  • Hombre pues muchas gracias! has solucionado mi problema y me has dado una valiosa lección espero seguir en contacto contigo saludos buen día y muchísimas gracias
    viernes, 17 de marzo de 2017 15:31