none
Agregar botones por comando vb.net RRS feed

  • Debate general

  • Buenas noches. Tengo un problema al agregar botones por comando en VB.NET

    Resulta que tengo que agregar botones según la cantidad de días que tenga un cierto mes del año

    En el eje X van 7 botones (por la cantidad de días de la semana) y en el eje Y (de momento) quiero poner 6 botones

    Usé este código para dibujarlos

    Dim y As Integer = 56 'En el eje Y empieza en la posición 56
            Dim Boton As New Button 'Declaro el botón
    
    
            While y < 692 'Empieza en la posición 56 hasta la posición 692 (alto del formulario) 
    
                Dim x As Integer = 0 'Declaro la Posición de X para que cada vez que sume Y, X vuelva a 0
    
                While x < 987 'Empieza en la posición 0 hasta la posición 987 (ancho del formulario)
    
                    Boton.Size = New Size(135, 100) 'Inserto el tamaño del botón
                    Boton.Location = New Point(x, y) 'Inserto la posición del botón
                    ConsultarDisponibilidad.Controls.Add(Boton) 'Se agrega el botón
    
                    x = x + 141 'Sumo 141 al valor X (135 del botón + los 6 de separación entre c/u)
    
                End While
    
                y = y + 106 'Sumo 106 al valor Y (100 del botón + los 6 de separación entre c/u)
    
            End While

    El problema es que cuando termina de realizar la función, me queda dibujado un solo botón y no todos. No puedo poner foto, paso link ---> https://ibb.co/bTeO9J

    Cómo puedo hacer para que los dibuje a todos? Se supone que con el .Controls.Add(boton) tiene que insertarlo en la posición que declaré antes.

    Saludos y gracias de antemano!

    lunes, 23 de julio de 2018 0:08

Todas las respuestas

  • Hola Xx_BySkull_xX,

    [-] ... Cómo puedo hacer para que los dibuje a todos? Se supone que con el .Controls.Add(boton) tiene que insertarlo en la posición que declaré antes.

    Claro, el método Add(Control ctrl) lo que hará es agregar un nuevo control al contenedor, pero en tu caso solo estás creando un solo botón. ¿Por qué? Porque estás creando un nuevo botón solo una vez (usas el New Button afuera del bucle).

    Para crear un nuevo botón por cada iteración se debe de crear una nueva instancia dentro del bucle While, por ejemplo, si lo declaras así ya debería mostrarte los botones.

    While x < 987 'Empieza en la posición 0 hasta la posición 987 (ancho del formulario)
    
        Dim Boton As New Button 'Declaro el botón
    
        Boton.Size = New Size(135, 100) 'Inserto el tamaño del botón

    Solo tendrías que cambiar las posiciones.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    lunes, 23 de julio de 2018 2:30
  • Era eso, muchas gracias :D
    lunes, 23 de julio de 2018 14:26