none
¿Como pasar un item de un listbox a varios textbox de forma individual? RRS feed

  • Pregunta

  • He bueno recurro a esto porque ya he buscado en muchos sitios y no puedo encontrar la solucion a mi problema y espero que ustedes me puedan ayudar, bueno asi que mi duda es la siguiente:

    Tengo 1 listbox y 5 textbox, entonces lo que yo quiero haces es pasar un un item de ese listbox a los textbox y el codigo que uso es este:

    TextBox1.Text = ListBox1.SelectedItem.ToString, y asi sucesivamente para todos los 5 textbox, el unico problema es que al momento de pasar un item del listbox se ponen en todos y yo quiero que solo se ponga en 1 textbox y luego poner diferentes items en los demas textbox utilizando ese mismo listbox, espero me entiendan y me puedan dar una solucion. Gracias.

    Pondre unas imagenes para que sea mas entendible, vean las imagenes segun el orden para ello le pondre numeros, las puede ver en estos link:

    1: https://i.imgur.com/XXu6tlc.png

    2: https://i.imgur.com/bSSpo46.png

    • Editado iJorgePc martes, 12 de diciembre de 2017 17:55
    lunes, 11 de diciembre de 2017 13:19

Respuestas

  • Lo puedes hacer bastante más sencillo gestionando el evento Enter de todos los TextBox con un único procediento y utilizando una variable global de tipo TextBox que sea la que contenga el control TextBox seleccionado:

    Public Class Form1
    
        Dim TextBoxSeleccionado As TextBox = Nothing
    
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    
            TextBox_EventoEnter()
        End Sub
    
        Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            If Not TextBoxSeleccionado Is Nothing Then
                TextBoxSeleccionado.Text = ListBox1.SelectedItem.ToString()
    
                TextBoxSeleccionado.BackColor = SystemColors.Window
            End If
        End Sub
    
        Private Sub TextBox_EventoEnter()
            For Each Ctr As Control In Me.Controls
                If TypeOf Ctr Is TextBox Then
                    'Inicializa el evento de los TextBox    
                    AddHandler Ctr.Enter, AddressOf AllTextBox_Enter
                    ' AddHandler Ctr.Leave, AddressOf AllTextBox_Leave
                End If
            Next
        End Sub
    
        Private Sub AllTextBox_Enter(sender As Object, e As System.EventArgs)
            TextBoxSeleccionado = sender
    
            sender.BackColor = Color.LightGreen
    
            ' Quito al resto de TextBox el color de seleccionado
            For Each Ctr As Control In Me.Controls
                If TypeOf Ctr Is TextBox AndAlso Not Ctr Is sender Then
                    Ctr.BackColor = SystemColors.Window
                End If
            Next
        End Sub
    
    End Class


    Saludos, Javier J

    miércoles, 13 de diciembre de 2017 7:55

Todas las respuestas

  • Hola Jorge, deberías ampliar más la idea como para encotrar una alternativa viable a tu necesidad, ya que como está siempre cargara el mismo item seleccionado a todos los textbox, sin conocer la necesidad es dificil encontrar una solución por ejemplo si la idea es cargar en forma ordenada los textbox, puedes otpar por colocarlos en un GroupBox y de allí cargar los items que tenga el ListBox ej

      Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
    
            Dim i As Integer = 0
    
            For Each text As Control In GroupBox1.Controls.OfType(Of TextBox)()
                text.Text = ListBox1.Items.Item(i).ToString
    
                i += 1
            Next
        End Sub

    En el ejemplo carga los items del el ultimo al primero de los texbox, esperamos más datos como para dar una mejor solucióin

    Saludos

    lunes, 11 de diciembre de 2017 16:24
  • No entiendo bien lo que quieres hacer. Pones el código que utilizas para el textbox1 pero no se como asignas el resto de textbox ni en que evento estás aplicando el código.

    Pon el código completo para que te podamos ayudar.


    Saludos, Javier J

    lunes, 11 de diciembre de 2017 16:24
  • Ampliare mas mi pregunta.
    martes, 12 de diciembre de 2017 17:44
  • Ampliare mas mi pregunta.
    martes, 12 de diciembre de 2017 17:44
  • Lo que te falta es asignar algo de donde tome referencia para poder cargar el dato según el Textbox que llame, algo símple (no se si la mejor manera) es genarar una variable que dispare un identificador segun se de enter en algúno de los TextBox ej:

    Public Class Form1
        Dim Sel As Integer = 0
    
        Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
            TextBox1.BackColor = Color.LightGreen
            Sel = 1
    
        End Sub
        Private Sub TextBox2_Enter(sender As Object, e As EventArgs) Handles TextBox2.Enter
            Sel = 2
            TextBox2.BackColor = Color.LightGreen
        End Sub
        Private Sub TextBox3_Enter(sender As Object, e As EventArgs) Handles TextBox3.Enter
            Sel = 3
            TextBox3.BackColor = Color.LightGreen
        End Sub
        Private Sub TextBox4_Enter(sender As Object, e As EventArgs) Handles TextBox4.Enter
            Sel = 4
            TextBox4.BackColor = Color.LightGreen
        End Sub
        Private Sub TextBox5_Enter(sender As Object, e As EventArgs) Handles TextBox5.Enter
            Sel = 5
            TextBox5.BackColor = Color.LightGreen
        End Sub
        Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
            Select Case Sel
                Case 1
                    TextBox1.Text = ListBox1.SelectedItem.ToString
    
                    TextBox1.BackColor = SystemColors.Window
                Case 2
                    TextBox2.Text = ListBox1.SelectedItem.ToString
    
                    TextBox2.BackColor = SystemColors.Window
                Case 3
                    TextBox3.Text = ListBox1.SelectedItem.ToString
    
                    TextBox3.BackColor = SystemColors.Window
                Case 4
                    TextBox4.Text = ListBox1.SelectedItem.ToString
    
                    TextBox4.BackColor = SystemColors.Window
                Case 5
                    TextBox5.Text = ListBox1.SelectedItem.ToString
    
                    TextBox5.BackColor = SystemColors.Window
                Case Else
                    MsgBox("No se seleccionó ningun equipo!")
            End Select
            ListBox1.Focus()
    
        End Sub
    
    End Class

    La variable "Sel" se carga con un valor que se le da al dal enter al textbox, luego mediante la propiedad del ListBox en un Select Case segun esa variable asigna el item seleccionado, le doy un color cuando se tilda para generar un efecto visual de quien lanza la llamada

    Lo pruebas y comentas

    Saludos


    • Editado Marcelo PF miércoles, 13 de diciembre de 2017 3:35
    miércoles, 13 de diciembre de 2017 3:31
  • El resultado que espero esta comentado :)
    miércoles, 13 de diciembre de 2017 4:13
  • Lo puedes hacer bastante más sencillo gestionando el evento Enter de todos los TextBox con un único procediento y utilizando una variable global de tipo TextBox que sea la que contenga el control TextBox seleccionado:

    Public Class Form1
    
        Dim TextBoxSeleccionado As TextBox = Nothing
    
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    
            TextBox_EventoEnter()
        End Sub
    
        Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            If Not TextBoxSeleccionado Is Nothing Then
                TextBoxSeleccionado.Text = ListBox1.SelectedItem.ToString()
    
                TextBoxSeleccionado.BackColor = SystemColors.Window
            End If
        End Sub
    
        Private Sub TextBox_EventoEnter()
            For Each Ctr As Control In Me.Controls
                If TypeOf Ctr Is TextBox Then
                    'Inicializa el evento de los TextBox    
                    AddHandler Ctr.Enter, AddressOf AllTextBox_Enter
                    ' AddHandler Ctr.Leave, AddressOf AllTextBox_Leave
                End If
            Next
        End Sub
    
        Private Sub AllTextBox_Enter(sender As Object, e As System.EventArgs)
            TextBoxSeleccionado = sender
    
            sender.BackColor = Color.LightGreen
    
            ' Quito al resto de TextBox el color de seleccionado
            For Each Ctr As Control In Me.Controls
                If TypeOf Ctr Is TextBox AndAlso Not Ctr Is sender Then
                    Ctr.BackColor = SystemColors.Window
                End If
            Next
        End Sub
    
    End Class


    Saludos, Javier J

    miércoles, 13 de diciembre de 2017 7:55
  • Muchas gracias me fue muy util mi amigo, personas como usted valen mucho! :D 
    jueves, 14 de diciembre de 2017 7:05