Buenas estoy realizando un programa y me veo atascado en un evento por código, de momento no encuentro nada pero sigo buscando, a ver si alguno me da la solución antes.
Pongo el siguiente ejemplo y es lo mismo que deseo que funcione con las matrices de 2 dimensiones en Visual Basic 2013.
El código de arriba muestra 5 controles de tipo PictureBox como un array, puesto que en NET no se
podía realizar mediante diseño, al hacer click en cualquiera de ellos obtenemos el índice del
que hemos pulsado y así podemos utilizar las propiedades de cada uno de ellos.
Siguiendo con el ejemplo, me gustaría lo mismo para una matriz de 2 dimensiones que la dibujo
perfectamente, pero cuando asigno el evento Click no se que emplear para obtener el índice
puesto que Array.IndexOf es para matrices unidimensionales ¿Como puedo obtener el índice de
una matriz de 2 dimensiones, (0,0) (0,1) (0,2).. (1,0)..etc, al hacer click sobre cada recuadro
PictureBox ? Muchas GRACIAS y saludos
Pongo el siguiente ejemplo y es lo mismo que deseo que funcione con las matrices de 2 dimensiones en Visual Basic 2013.
Código (vbnet) [Seleccionar]
Private Lista(4) As PictureBox
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For A = 0 To 4
Lista(A) = New PictureBox ' Creamos una nueva instancia
Lista(A).Size = New Size(32, 32) ' Tamaño PictureBox
Lista(A).BorderStyle = 1 ' Dibuja borde
Lista(A).Location = New Point(A * 32 + A, 50) ' Posicionamos PictureBox
Me.Controls.Add(Lista(A)) ' Añadimos al Formulario
AddHandler Lista(A).Click, AddressOf Evento1 ' Agregamos evento Click
Next A
End Sub
Private Sub Evento1(sender As Object, e As EventArgs)
Dim Index As Integer = Array.IndexOf(Lista, sender) ' Obtenemos el índice seleccionado
MsgBox("Has pulsado " & Index + 1 & " recuadro.")
End Sub
El código de arriba muestra 5 controles de tipo PictureBox como un array, puesto que en NET no se
podía realizar mediante diseño, al hacer click en cualquiera de ellos obtenemos el índice del
que hemos pulsado y así podemos utilizar las propiedades de cada uno de ellos.
Siguiendo con el ejemplo, me gustaría lo mismo para una matriz de 2 dimensiones que la dibujo
perfectamente, pero cuando asigno el evento Click no se que emplear para obtener el índice
puesto que Array.IndexOf es para matrices unidimensionales ¿Como puedo obtener el índice de
una matriz de 2 dimensiones, (0,0) (0,1) (0,2).. (1,0)..etc, al hacer click sobre cada recuadro
PictureBox ? Muchas GRACIAS y saludos
Código (vbnet) [Seleccionar]
Private Matriz(2, 3) As PictureBox ' Matriz de 3x4 elementos
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Dibujamos matriz bidimensional de 3 filas y 4 columnas
For F = 0 To 2 ' Recorre las Filas
For C = 0 To 3 ' Recorre las Columnas
Matriz(F, C) = New PictureBox
Matriz(F, C).Size = New Size(32, 32)
Matriz(F, C).BorderStyle = 1
Matriz(F, C).Location = New Point(C * 32 + C, F * 32 + F + 100)
Me.Controls.Add(Matriz(F, C))
AddHandler Matriz(F, C).Click, AddressOf Evento2
Next C
Next F
End Sub
Private Sub Evento2(sender As Object, e As EventArgs)
' Fallo porque Array.IndexOf es para matrices de 1 sola dimensión
Dim Index As Integer = Array.IndexOf(Matriz, sender)
'...
End Sub