lunes, 5 de octubre de 2009

Crear botones dinámicamente

Public Class Form1
Private btnProductos() As System.Windows.Forms.Button
Private btnMonedas() As System.Windows.Forms.Button

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim iProd As Short = 0 'defino los indices de los FOR
Dim iMonedas As Short = 0
Dim miPoint As New Point 'Para asignar el location de los botones tengo que definir una variable de tipo Point
Dim productos As New List(Of String) 'Lista de productos
Dim precios As New List(Of String) 'Lista de precios
Dim monedas As New List(Of String) 'Lista de monedas

productos.Add("Café") 'Añado los productos con sus precios
precios.Add("0,40")
productos.Add("Chocolate")
precios.Add("0,35")
'productos.Add("Té")
'precios.Add("0,25")
productos.Add("Palo")
precios.Add("0,05")

miPoint.X = 10 'Defino la posición inicial de los botones de productos
miPoint.Y = 10

ReDim btnProductos(productos.Count - 1) 'Hago un reDim del Array

For iProd = 0 To productos.Count - 1 'Recorro la lista de productos
btnProductos(iProd) = New System.Windows.Forms.Button() 'Instancio un botón
miPoint.Y += 50 'Defino la posición Y del botón
With btnProductos(iProd) 'Asgino las propiedades del botón
.Name() = productos.Item(iProd)
.Text() = productos.Item(iProd) + Chr(13) + precios.Item(iProd) + " €"
.Tag() = precios.Item(iProd)
.Size() = New Size(100, 40)
.Location = New System.Drawing.Point(miPoint.X, miPoint.Y)
AddHandler .Click, AddressOf Me.btnProductos_Click 'Le añado un Manejador de eventos
End With
Next

Me.Controls.AddRange(btnProductos) 'Añado los botones al formulario

monedas.Add("0,05") 'Añado las monedas
monedas.Add("0,10")
monedas.Add("0,20")
monedas.Add("0,50")
monedas.Add("1,00")
monedas.Add("2,00")

miPoint.X = 150 'Defino la posición inicial de los botones de las monedas
miPoint.Y = 30

ReDim btnMonedas(monedas.Count - 1) 'Hago un reDim del Array

For iMonedas = 0 To monedas.Count - 1 'Recorro la lista de monedas
btnMonedas(iMonedas) = New System.Windows.Forms.Button() 'Instancio un botón
miPoint.Y += 30 'Defino la posición Y del botón
With btnMonedas(iMonedas) 'Asgino las propiedades del botón
.Name() = "monedas" & monedas.Item(iMonedas)
.Text() = monedas.Item(iMonedas) + " €"
.Tag() = monedas.Item(iMonedas)
.Size() = New Size(100, 20)
.Location = New System.Drawing.Point(miPoint.X, miPoint.Y)
AddHandler .Click, AddressOf Me.btnMonedas_Click 'Le añado un Manejador de eventos
End With
Next

Me.Controls.AddRange(btnMonedas) 'Añado los botones al formulario

End Sub

No hay comentarios:

Publicar un comentario