none
Llenar un Combobox por medio de Texbox y quitar items si textbox esta vacio.

    Pregunta

  • Hola amigos de VB.NET

    Como podria llenar un combobox con los nombres de los label referentes a  los textbox e ir monstrando en un label aparte el valor que tiene cada textbox? como se muestra en la imagen.

    Label       Textbox                              Index del combo

    Valor1      txt_Valor1.text = (20) -->  Combo.Items(0)

    Valor2      txt_Valor2.text = (-5) -->   Combo.Items(1)

    Valor3      txt_Valor3.text  = (-12) --> Combo.Items(2)

    Valor4      txt_Valor4.text  = (6) -->    Combo.Items(3)


    Las validaciones que requiero son  que: si se deja un textbox en blanco, que no aparesca en el combo. y si luego se ingresa el valor en el textbox que se dejo vacio, aparesca en el combo.

    Implemente este codigo para ingresar los valores al Combo

    Private Sub Cargar_Combo_Click(sender As Object, e As EventArgs) Handles Button1.Click With combo_Valores.Items Insert(0,txt_Valor1.Text) Insert(1,txt_Valor2.Text) Insert(2,txt_Valor3.Text) Insert(3,txt_Valor4.Text) End With e intente probar este codigo para quitar o dejar el index respectivo en el combo

    dependiendo si esta o no vacio el textbox , pero no me funciona: If (txt_Valor1.Text.trim)= "" Then combo_Valores.Items.RemoveAt(0) ElseIf (txt_Valor2.Text.trim)= "" Then combo_Valores.Items.RemoveAt(1) ... ElseIf (txt_Valor4.Text.trim)= "" Then combo_Valores.Items.RemoveAt(3) End If End Sub

    Espero que me puedan dar una ayuda , un saludo.






    • Editado Jose Alrey jueves, 10 de noviembre de 2016 2:29
    jueves, 10 de noviembre de 2016 1:43

Respuestas

  • Al estilo Linq

    Private Sub Cargar_Combo_Click(sender As Object, e As EventArgs) Handles Cargar_Combo.Click
     Dim lista = From labels In Me.Controls.OfType(Of Label)
        Join textos In Me.Controls.OfType(Of TextBox)
         On labels.Name(labels.Name.Length - 1) Equals textos.Name(textos.Name.Length - 1)
        Where labels.Name.StartsWith("lbl_Valor") And textos.Text.Length > 0
        Order By labels.Name
        Select New With {Key .Texto = labels.Text, .Valor = textos.Text}

     Combo_Valores.DisplayMember = "Texto"
     Combo_Valores.ValueMember = "Valor"
     Combo_Valores.DataSource = lista.ToList()
    End Sub

    Private Sub Combo_Valores_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Combo_Valores.SelectedIndexChanged
     LblMostrar.Text = Combo_Valores.SelectedValue
    End Sub

    jueves, 10 de noviembre de 2016 10:41