none
Obtener Control dinamicamente para modificar RRS feed

  • Pregunta

  • Buen día

    Estoy creando un programa que en tiempo de ejecucion crea dinamicamente Textbox y Botones, los botones al hacer clic abriran un openfiledialog, estos obtendran el nombre del archivo a cargar y lo debe asignar a su Textbox.

    Entonces:

    //Aqui es donde se recibe la petición para crear los controles
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim points(NumericUpDown1.Value - 1) As Point 'apartir del dato que ingrese el usuario se crearan los controles textbox
            Dim pointsbt(NumericUpDown1.Value - 1) As Point 'apartir del dato que ingrese el usuario se crearan los controles botones
    
            Dim NumParaNombre As Integer = 0
    
            For index As Integer = 0 To points.Length - 1
                NumParaNombre = NumParaNombre + 1
                points(index) = New Point(100, (20 * index) + 140)
                pointsbt(index) = New Point(220, (20 * index) + 140)
    
                ' Creamos los controles TextBox y Botones
    
                Dim tb As TextBox = CrearTextbox(points(index), New Size(110, 20), "txt" & NumParaNombre)
                Dim bt As Button = CrearBoton(pointsbt(index), New Size(110, 20), "btn" & NumParaNombre)
    
                ' Lo añadimos al formulario donde actualmente
                ' se está ejecutando el código.
    
                tb.Parent = Me
                bt.Parent = Me
    
            Next
        End Sub

    Esto es para crear los controles

        Private Function CrearTextbox(ByVal location As Point, ByVal size As Size, ByVal name As String) As TextBox
            Dim tb As New TextBox()
            tb.Location = location
            tb.Size = size
            tb.Name = name
    
            Return tb
        End Function
        Private Function CrearBoton(ByVal location As Point, ByVal size As Size, ByVal name As String) As Button
            Dim bt As New Button()
            bt.Location = location
            bt.Size = size
            bt.Text = "Cargar"
            bt.Name = name
    
            AddHandler bt.Click, AddressOf buttonclick
            Return bt
        End Function
        Private Sub buttonclick(sender As Object, e As EventArgs)
            Dim boton As Button = DirectCast(sender, Button)
            Dim openFileDialog1 As New OpenFileDialog()
    
    
            openFileDialog1.InitialDirectory = "c:\"
            openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
            openFileDialog1.FilterIndex = 2
            openFileDialog1.RestoreDirectory = True
    
            If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    
                'AQUI ES DONDE NECESITO SABER COMO MOSTRAR EL NOMBRE DEL ARCHIVO EN EL TXTGENERADO DINAMICAMENTE
    
            End If
        End Sub

    Como puedo agregar el nombre del archivo seleccionado al textbox que le toca a cada uno es decir boton1 con textbox1, boton2 con textbox2, etc.

    Espero me ayuden, gracias.

    Gracias

    viernes, 6 de diciembre de 2019 20:38

Respuestas

  • Primero crea el control textbox como una variable global osea fuera del metodo y dentro del metodo instanciala despues comprueba con un if si el control existe esto lo compruebas dentro del if del openfiledialog y en su propiedad Text le dices que sera igual al valor de la propiedad Filename del OpenFileDialog 

    ejemplo:

      If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    
           if not tb is nothing then
               tb.text = OpenFileDialog.FileName
           End if
       End If


    • Marcado como respuesta Chino_afro1 sábado, 7 de diciembre de 2019 17:42
    sábado, 7 de diciembre de 2019 1:05