Visual Basic.NET - Crear botones mediante código

 
Vista:

Crear botones mediante código

Publicado por Carlos (78 intervenciones) el 19/09/2006 13:23:10
Hola a tod@s

Necesito crear una especie de tabla de tamaño 24 columnas por 18 filas a base de Buttons. Cada uno de estos controles con una propiedad Text diferente. Como veis es un trabajo considerable.

Mi idea es hacer los botones por código. Es decir hacer dos bucles For anidados para que cree todos los botones la propia aplicación. En cuanto a la propiedad Text, se podia ir cogiendo de un fichero o utilizando las instrucciones Read / Data.

Lo que no sé es crear controles Button mediante código.

¿Alguien me puede ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

RE:Crear botones mediante código

Publicado por fernanado (40 intervenciones) el 20/09/2006 01:21:03
utiliza este codigo

dim btn as new Button()

Me.Controls.Add(btn)

con esto podras crear los botenes en tiempo de ejecucion.
PD: la informacion la saque de los manuales en pantalle del VS

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Crear botones mediante código

Publicado por thessen (298 intervenciones) el 21/09/2006 08:45:22
Amplio un poco la información... Para que los botones te "funcionen" deberas asociar un método al evento click de los botones. Si sabes exactamente el número de botones a crear, puedes hacer un método por cada boton o utilizar el mismo para todos en el que preguntarás por el botón que hace la llamada. Mas o menos asi :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub CreaBotones
    Dim btn as new Button()   ' Creas el objeto boton
 
    with btn
         .Name = "NombreObjeto"  ' Asignas el nombre del objeto
         .Text = "Texto del Botón"     ' Asignas el texto del objeto
         .Location = New System.Drawing.Point (posicionX, posicionY) ' Asignas la posición del objeto
         .Size = new System.Drawing.Size (ancho, alto) ' Asignas el tamaño del objeto
    end with
 
    AddHandler btn.Click, AddressOf Button_Click   ' Asocias el evento al método Button_Click
 
    Me.Controls.Add(btn)  ' Agregas el botón al formulario.
End Sub
 
Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
      select case cType(sender, System.Windows.Forms.Button).Name
           case "NombreBoton1"
                ' Accion para el boton 1
           case "NombreBoton2"
                ' Accion para el boton 2
           case "NombreBoton3"
                ' Accion para el boton 3
           case else
               ' Accion genérica
      end select
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

RE:Crear botones mediante código

Publicado por Carlos (78 intervenciones) el 28/09/2006 14:55:28
muchas gracias por la información. me ha sido muy útil.

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Crear botones mediante código

Publicado por Carlos (78 intervenciones) el 03/10/2006 14:24:26
Ahora sólo me falta saber una cosa:

Al hacer clik en cualquiera de los botones, ¿cómo puedo saber por ejemplo la propiedad text del boton pulsado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Crear botones mediante código

Publicado por cecilio (1 intervención) el 03/10/2006 21:13:18
con CType(sender, System.Windows.Forms.Button).Text
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Crear botones mediante código

Publicado por henry (1 intervención) el 27/06/2013 00:31:11
buen aporte amigo me ayudo en mi proyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Crear botones mediante código

Publicado por kevin (7 intervenciones) el 15/06/2016 02:34:41
Hola amigo me sirvio tu informacion muchas gracias, sabes y si quiero que ese boton se guarde como le hago. saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear botones mediante código

Publicado por Frank (1 intervención) el 02/11/2016 04:51:14
Hola a todos, este sera mi primer post aquí ya que me he registrado en esta web por este problema, que era justo una de las cosas que me faltaban para mi programa; muchas gracias a los que aquí han aportado, realmente no se cuanto tiempo me hubiera tomado encontrar exactamente estas respuestas por toda la web, si es que las hubiera encontrado...

me gustaría aportar a mi también como me va quedando esta parte de mi solución por si a alguien mas le sirve


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Public Class Form1
    Dim fils As Integer = 9
    Dim cols As Integer = 7
    Dim arreglodebotones((cols * fils) - 1) As Button
    Dim Label1 As New Label
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Label1.Text = "-"
        Label1.Location = New Point(20, 20)
        Label1.Font = New Font("Arial", 20, FontStyle.Bold)
        Me.Controls.Add(Label1)
 
        For a As Integer = 1 To ((cols * fils) - 1) Step 1
            arreglodebotones(a) = New Button
            arreglodebotones(a).Text = a
            arreglodebotones(a).Width = 70
            arreglodebotones(a).Height = 60
            arreglodebotones(a).Font = New Font("Arial", 20, FontStyle.Bold)
 
            If 1 = 1 Then ' haz false para ver otro orden
                arreglodebotones(a).Location = New Point(50 + (((a - 1) Mod cols) * (70 + 3)), 50 + (((a - 1) \ cols) * (60 + 3))) 'el numero constante 50 es el marco por default, el 70 corresponde al ancho de los botones, el 60 a la altura, y el numero 3 espaciado entre los botones.
            Else
                arreglodebotones(a).Location = New Point(50 + ((cols - 1 - ((a - 1) Mod cols)) * (70 + 3)), 50 + ((fils - 1 - ((a - 1) \ cols)) * (60 + 3)))
            End If
 
            AddHandler arreglodebotones(a).Click, AddressOf Button_Click   ' Asocias el evento al método Button_Click
            Me.Controls.Add(arreglodebotones(a))
        Next
 
        Me.Size = New System.Drawing.Size((cols * (70 + 3)) + 110, (fils * (60 + 3)) + 200)
 
        If (cols * (70 + 3)) + 110 > 1000 Then
            Me.Width = 1000
        End If
 
        If (fils * (60 + 3)) + 200 > 700 Then
            Me.Height = 700
        End If
 
        Me.AutoScroll = True
    End Sub
 
    Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
        escritor(Array.IndexOf(arreglodebotones, sender)) ' obteniendo el key/indice en el arreglo del obeto actual en numero.
    End Sub
 
    Private Sub escritor(escritura As Integer)
        Label1.Text = escritura
    End Sub
 
End Class


y solamente agregar por ultimo que lo que finalmente me ha animado a registrarme en esta pagina ha sido que me ha gustado mucho su diseño actual, que se me hace muy claro/legible y comodo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear botones mediante código

Publicado por miguel cayoja (1 intervención) el 28/09/2018 15:54:48
muchas gracias el codigo este es el que estaba buscando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar