Intereting Posts
Как добавить тысячи элементов в связанную коллекцию без блокировки GUI Передача значений из другой формы Winforms Любая точка в List .ForEach () с Async? Хранить массив в SQL Server 2008 Какая правильная реализация для GetHashCode () для classов сущностей? Где я могу изменить подробные настройки оптимизации компилятора C # в Visual Studio? Список запросов Linq содержит список Как изменить позицию элемента строки в C # Как получить доступ к структуре в другой памяти программы? Есть ли способ сделать изображение квантования безопасно и без Marshalling? Как я могу использовать дерево выражений для вызова универсального метода, когда тип известен только во время выполнения? Предложите метод автоматического обновления моей программы на C # Настройка параметров восстановления в службах Windows Отладка текущей страницы в ASP.NET MVC Сериализация XML списка с атрибутами

Как создать метки внутри цикла 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(); } 

Этот цикл for находится внутри Form1_Load так что он будет запускаться при загрузке формы. Проблема в том, что когда я прерываю точку, я вижу, что код внутри forloop не замечается точкой разрыва / не запускается. это почему?? и как я могу создать множество меток, случайно помещенных в form1(window form)

Проблема в

 private ArrayList label= new ArrayList(30); 

Это создает ArrayList размером 30, а не один из 30 элементов.

Если вы делаете что-то вроде

 List 

Он должен работать.

Кроме того, обратите внимание, что мое использование List вместо ArrayList - это случаи, когда вы захотите иметь возможность указывать объекты, которые вы вынимаете, но обычно (и в этом случае) общие формы, в которых вы указываете тип, будут конечно, вы намного лучше. Вам не нужно будет делать все бокс, который вы делаете, и вы будете писать меньше строк кода, все из которых будут более читабельными.

Линия

 private ArrayList label= new ArrayList(30); 

не создает ArrayList с 30 элементами. Он создает ArrayList с начальной емкостью 30, но все равно никаких элементов (см. Здесь документацию). Цикл for не работает, поскольку label.Count равен нулю.

Подумайте о том, чтобы изменить его на нечто вроде

 private ArrayList label = new ArrayList(); for (int i = 0; i < 30; i++) label.Add(new Label(...)); 

Далее следует остальная часть вашего кода.

Здесь есть два вопроса:

  1. почему ваши точки останова не попадают
  2. будет ли этот код работать.

Во-первых, измените свой код вместо использования ArrayList

 private List 

и вы можете остановить уродливое кастинг повсюду. Вам нужно изменить метку. Кроме того, она будет равна 30.

Во-вторых, точки останова, которые не попадают, почти всегда являются признаком того, что ваша отладочная информация не синхронизирована с вашим кодом, или отладчик не смог найти ваш файл PDB (debug info).

Убедитесь, что вы используете сборку отладки. Проверьте следующее: точки останова в коде не попадают. Также обратитесь к моему блогу, чтобы проверить, загружены ли символы в разделе о том, как VS загружает ваш файл PDB (если чистый и т. Д. Не работает на вашем решении, но он должен! )

http://completedevelopment.blogspot.com/2009/11/debugging-in-gac-all-ways-to-accomplish.html