¿Cómo puedo crear tags dentro de un bucle For?

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í:

  1. ¿Por qué sus puntos de ruptura no están siendo alcanzados
  2. ¿Funcionará este código?

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