none
Bucle para obtener cualquier boton de cualquier formulario

    Pregunta

  • Buenas, necesito especificar que la variable del bucle me almacene todos los botones del proyecto básicamente, no importa en que formulario esté. Pero no se bien como hacerlo he intentando esto:

    For Each button As button In My.Application.OpenForms 'Por cada botón que se encuentre en todos los formularios abierto...

    if button.Name = "Prueba" then

    'Hacer una acción

    Elseif button.Name = "Prueba2" then

    'Hacer otra acción..

    End If

    Next

    Pero me sale error 


    Renzo Rivera

    domingo, 26 de febrero de 2017 18:04

Respuestas

  • Hola Renzo19,

    Lo que pasa es que la propiedad OpenForm devuelve una colección de formularios y no existe un control 'Button' dentro del resultado, tienes que obtener los controles del tipo Button.

    Podrías hacer algo como :

    For Each frm As Form In Application.OpenForms
        For Each btn As Button In frm.Controls.OfType(Of Button)
            Select Case btn.Name
                Case "Prueba"
                    btn.BackColor = Color.Red  'Ejecutar acción cuando el nombre sea Prueba.
                Case "Prueba2"
                    btn.BackColor = Color.Green 'Ejecutar acción cuando el nombre sea Prueba2.
                Case Else
                    'Acción por defecto
            End Select
        Next
    Next

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Renzo19 lunes, 27 de febrero de 2017 4:53
    domingo, 26 de febrero de 2017 18:59

Todas las respuestas

  • Hola Renzo19,

    Lo que pasa es que la propiedad OpenForm devuelve una colección de formularios y no existe un control 'Button' dentro del resultado, tienes que obtener los controles del tipo Button.

    Podrías hacer algo como :

    For Each frm As Form In Application.OpenForms
        For Each btn As Button In frm.Controls.OfType(Of Button)
            Select Case btn.Name
                Case "Prueba"
                    btn.BackColor = Color.Red  'Ejecutar acción cuando el nombre sea Prueba.
                Case "Prueba2"
                    btn.BackColor = Color.Green 'Ejecutar acción cuando el nombre sea Prueba2.
                Case Else
                    'Acción por defecto
            End Select
        Next
    Next

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Renzo19 lunes, 27 de febrero de 2017 4:53
    domingo, 26 de febrero de 2017 18:59
  • Ok, una pregunta eso me funciona en caso de que el boton no este directamente en el formulario? osea si hay botones en el formulario o en contenedores dentro del formulario como el BindingNavigator o el GroupBox? Y gracias por tu respuesta 

    Renzo Rivera


    • Editado Renzo19 lunes, 27 de febrero de 2017 1:01
    lunes, 27 de febrero de 2017 1:00