Buenos días a todos. Tengo una pequeña duda, y es que, sé como crean botones mediante código, los coloco donde quiero y todo, pero... ¿Cómo puedo saber el botón que se ha pulsado?
Para crear los botones, utilizo una función para saber el número exacto de botones que debo de crear:
Código:
Public Function Obtener_Informacion_Camareros()
' ## Obtener el número de camareros para crear los botones
Try
Dim sentencia As String = "SELECT COUNT(*) FROM camareros WHERE activo='1'"
Dim comandos As New MySqlClient.MySqlCommand
comandos.Connection = MYSQL_Conexion
comandos.CommandText = sentencia
MYSQL_Conexion.Open()
Numero_Camareros = comandos.ExecuteScalar
MYSQL_Conexion.Close()
Catch ex As Exception
MessageBox.Show("Error, no ha sido posible realizar la operación " & vbNewLine & ex.Message)
MYSQL_Conexion.Close()
End Try
' ## Obtener sus imagenes
Try
MYSQL_Conexion.Open()
Dim da As New MySqlClient.MySqlDataAdapter("SELECT nombre_camarero,imagen_camarero FROM camareros", MYSQL_Conexion)
Dim ds As New DataSet
da.Fill(ds)
ReDim Nombre_Camarero(Numero_Camareros - 1)
ReDim Imagen_Camarero(Numero_Camareros - 1)
For i As Integer = 0 To Numero_Camareros - 1
Nombre_Camarero(i) = ds.Tables(0).Rows(i).Item(0).ToString
Imagen_Camarero(i) = ds.Tables(0).Rows(i).Item(1).ToString
Next
MYSQL_Conexion.Close()
Catch ex As Exception
MessageBox.Show("Error, no ha sido posible realizar la operación " & vbNewLine & ex.Message)
End Try
End Function
Mediante la función anterior, almaceno en la variable
Numero_Camareros, el número de camareros activos, o lo que es lo mismo, el número de botones a crear.
Luego utilizo otra función, para crear los botones y colocarlos dentro de un FlowLayoutPanel:
Código:
Public Function CrearBotonesCamareros(ByVal cantidad As Integer, ByVal x As Integer, ByVal y As Integer)
For i As Integer = 0 To cantidad - 1
Dim Boton As New Button
With Boton
.Name = "btnCamarero " & i
.Size = New Size(x, y)
.Image = Image.FromFile(CarpetaImagenes & Imagen_Camarero(i))
.ImageAlign = ContentAlignment.TopCenter
.Text = Nombre_Camarero(i)
.TextAlign = ContentAlignment.BottomCenter
.Font = New Font("Arial", 8, FontStyle.Bold)
End With
Me.MatrizCamareros.Controls.Add(Boton)
Next
End Function
Y para llamar a la función anterior, lo hago desde el evento Load del formulario principal:
Código:
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Obtener_Informacion_Camareros()
CrearBotonesCamareros(Numero_Camareros, 90, 90)
End Sub
Como verán, hasta aquí está todo bien (creo), pero lo único es, que no se como saber, que botón se ha pulsado, y desde donde tengo que controlar esto, si desde una función a parte, un Sub, un evento....
Les agradecería mucho, que me orientasen un poquito al respecto.
Muchas gracias.