private ArrayList label= new ArrayList(30); Label label_class = new Label(); Random r = new Random(); for (int i = 0; i < label.Count; i++) { ((Label)label[i]).Location = new Point(r.Next(ClientRectangle.Right -10), r.Next(ClientRectangle.Bottom - 10)); ((Label)label[i]).Text = "o"; ((Label)label[i]).Click += new EventHandler(Form1_Load); this.Controls.Add((Label)label[i]); ((Label)label[i]).Show(); }
Este bucle for está dentro de Form1_Load
modo que se ejecutará cuando el formulario se esté cargando. El problema es que, cuando punto el punto de interrupción, veo que el código dentro del forloop no se percata del punto de interrupción / no se ejecuta. ¿¿porqué es eso?? y cómo puedo crear muchas tags colocadas al azar en form1(window form)
El problema esta en
private ArrayList label= new ArrayList(30);
Esto crea un ArrayList
de tamaño 30, no uno con 30 elementos.
Si haces algo como
List
Deberia de funcionar.
Además, tenga en cuenta mi uso de List
lugar de ArrayList
hay casos en los que querrá tener la capacidad de especificar los objetos que está extrayendo, pero en general (y en este caso) los formularios generics en los que especifica el tipo Seguro que mucho mejor. No necesitarás hacer todo el boxeo que estás haciendo y escribirás menos líneas de código, todas las cuales serán más legibles.
La línea
private ArrayList label= new ArrayList(30);
no crea un ArrayList con 30 elementos. Construye un ArrayList con una capacidad inicial de 30, pero aún no hay elementos (consulte la documentación aquí ). El bucle for
no se está ejecutando porque label.Count
es cero.
Considera cambiarlo a algo como
private ArrayList label = new ArrayList(); for (int i = 0; i < 30; i++) label.Add(new Label(...));
Seguido por el rest de tu código.
Realmente hay dos preguntas aquí:
Primero, cambie su código en lugar de usar un uso ArrayList
private List
Y puedes parar el reparto feo por todo el lugar. Necesitas cambiar la etiqueta. Cuenta para tener 30 en su lugar también.
En segundo lugar, los puntos de interrupción que no se alcanzan es casi siempre una señal de que la información de depuración no está sincronizada con su código o el depurador no pudo encontrar su archivo PDB (información de depuración).
Asegúrese de que está utilizando una versión de depuración. Echa un vistazo a lo siguiente: los puntos de interrupción en el código detrás no se alcanzan También consulta mi blog para verificar si los símbolos están cargados en la sección sobre cómo decirle a VS que cargue tu archivo PDB (si está limpio, etc. no funciona en tu solución, ¡pero debería!) )
http://completedevelopment.blogspot.com/2009/11/debugging-in-gac-all-ways-to-accomplish.html