Hola!
David tiene razón, la única forma de poder controlar eventos para controles creados dinámicamente es crear uno en tiempo de diseño con la propiedad Index a cero y agregar los demás con Load para poder utilizar el parámetro Index en sus eventos.
Visual Basic no permite crear un array de controles con WithEvents, estas dos instrucciones dan error directamente en el editor:
Código:
Dim WithEvents MiPicture(5) As PictureBox ' Array de 5 controles, por ejemplo
Dim WithEvents MiPicture() As PictureBox ' Array dinámico
y el objeto Collection, directamente no admite el modificador WithEvents.
Si utilizas el código que ha pasado
seba123neo, y no cambias el nombre del control (MiPicture en el ejemplo), estás asignando cada nuevo control a la misma variable, por eso sólo te funciona el último control creado.