40 - Controles comunes - ComboBox


El control ComboBox permite seleccionar un String de una lista.

Para inicializar los string que contendrá el ComboBox debemos acceder a la propiedad Items

Un evento muy útil con este control es cuando el operador selecciona un Item de la lista. Para capturar la selección de un item debemos codificar el evento SelectedIndexChanged.

Problema 1:

Cargar en un ComboBox los nombres de varios colores. Al seleccionar alguno mostrar en la barra de título del Form el String seleccionado.

Programa:

Public Class Form1
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Text = ComboBox1.Text
    End Sub
End Class

Cuando se selecciona un string de la lista se dispara el evento SelectedIndexChanged y procedemos a extraer el texto seleccionado del ComboBox y lo mostramos en el título del Form:

        Text = ComboBox1.Text

Problema 2:

Disponer tres controles de tipo ComboBox con valores entre 0 y 255 (cada uno representa la cantidad de rojo, verde y azul). Luego al presionar un botón pintar el fondo del Form con el color que se genera combinando los valores de los ComboBox.

ComboBox

Hay un evento muy importante en la clase Form llamado Load (seleccionemos el formulario y generemos dicho evento) Este evento se dispara cuando se carga el formulario con todos los controles visuales. En este evento cargaremos los tres ComboBox con los números.

Programa:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim f As Integer
        For f = 0 To 255
            ComboBox1.Items.Add(f)
            ComboBox2.Items.Add(f)
            ComboBox3.Items.Add(f)
        Next
        ComboBox1.SelectedIndex = 0
        ComboBox2.SelectedIndex = 0
        ComboBox3.SelectedIndex = 0
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim rojo As Integer = ComboBox1.Text
        Dim verde As Integer = ComboBox2.Text
        Dim azul As Integer = ComboBox3.Text
        BackColor = Color.FromArgb(rojo, verde, azul)
    End Sub
End Class

La carga manual de cada ComboBox nos haría perder mucho tiempo en tiempo de diseño por lo que lo hacemos mediante un algoritmo. Cuando se carga el Form se ejecuta el evento Load donde mediante un For procedemos a añadir los 256 valores:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim f As Integer
        For f = 0 To 255
            ComboBox1.Items.Add(f)
            ComboBox2.Items.Add(f)
            ComboBox3.Items.Add(f)
        Next

La propiedad Items del ComboBox tiene un método llamado Add que añade un elemento a la lista.

Luego para dejar seleccionado por defecto el primer item añadido iniciamos la propiedad SelectedIndex:

        ComboBox1.SelectedIndex = 0
        ComboBox2.SelectedIndex = 0
        ComboBox3.SelectedIndex = 0

En el evento Click del botón procedemos a extraer el valor seleccionado de cada ComboBox:

        Dim rojo As Integer = ComboBox1.Text
        Dim verde As Integer = ComboBox2.Text
        Dim azul As Integer = ComboBox3.Text

Para cambiar el color de fondo del Form actualizamos la propiedad BackColor. El color lo generamos llamando al método estático FromArgb de la clase Color:

        BackColor = Color.FromArgb(rojo, verde, azul)

Problema propuesto

  1. Solicitar el ingreso del nombre de una persona y seleccionar de un control ComboBox un país. Al presionar un botón mostrar en la barra del título del Form el nombre ingresado y el país seleccionado.
Solución
Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Text = TextBox1.Text & " - " & ComboBox1.Text
    End Sub
End Class

Retornar