В Visual Studio 2010 зависает при открытии формы, содержащей пользовательский элемент управления в режиме конструктора

следующая моя проблема: У меня есть пользовательский UserControl в моем проекте Windows Forms. Я могу спроектировать его в дизайнере просто отлично. Но как только я хочу изменить форму, содержащую элемент управления Visual Studio 2010 аварийно завершает работу.

насколько я мог видеть, конструктор и Load-Event элемента управления выполняются при загрузке формы.

Я попытался использовать другой экземпляр VS2010 для отладки конструктора, но не смог найти место, где execption происходит.

сначала моя проблема, казалось, была в том, что для Threading.Timer object, который я использую для инициализации моих объектов (т. е. загрузки значений из базы данных и т. д. (При ошибке повторите попытку позже ;))), функция обратного вызова была выполнена дизайнером, поэтому она попыталась получить доступ к объектам, к которым у нее не было доступа в режиме проектирования. Инициализация Threading.Timer объект находится в Load-событии. Но даже после того, как я прокомментировал все в событии load out (кроме блока try catch a Debugger.Break() вызов точки останова во втором экземпляре VS2010 для отладки конструктора) Visual Studio продолжает сбой, как только я хочу изменить форму, содержащую элемент управления в режиме разработки.

Я пробовал некоторые шаги, которые я нашел здесь, без ответа на мою проблему: пользовательский элемент управления всегда аварийно завершает работу Visual Studio

поэтому, даже если дизайнеру нечего делать при разборе Load-Event или конструктора. Это все еще крахи.

есть ли у кого-нибудь идея, что я мог бы сделать, чтобы предотвратить сбой Visual Studio и правильное отображение пользовательского элемента управления в конструкторе форм?

проект, содержащий usercontrol также ссылается на некоторые пользовательские библиотеки и проект библиотеки. Я не знаю, Может ли проблема иметь какое-то отношение к этому.

3 ответов


решил как-то свою проблему...

как-то, пытаясь отладить режим конструктора я обманул себя.

задание отладчик.Break () в Load-Event была очень плохая идея при попытке открыть форму, содержащую пользовательский элемент управления в режиме конструктора, потому что если вы не отлаживаете Visual Studio с другим экземпляром Visual Studio, то отладчик.Break () остановит приложение и, следовательно, завершит работу Visual Studio Пример.

в конце концов, используя свойство DesignerMode пользовательского элемента управления, я смог предотвратить выполнение конструктором инициализации моего потока.Объекты Timer могут решить проблему таким образом.


У меня была эта же проблема (VS 2005), и отмеченный ответ также не работал для меня. Наконец, я смог решить проблему, удалив папки" obj "и" bin " в моем решении, а затем перестроив проект в режиме выпуска. Надеюсь, это поможет кому-то еще, у кого есть эта проблема.


в моей проблеме все решение разбилось каждый раз, когда я открывал его из-за режима проектирования, открывая виновный файл каждый раз, когда я открывал решение и, таким образом, вызывая сбой всего решения, это могло быть вызвано пользовательскими элементами управления, но я не мог получить доступ к решению для решения.

поэтому я нашел альтернативный способ просто позволить мне вернуться к моему кодированию.. Это не включало в себя очень глубокую отладку системных событий, я думаю, что это может помочь всем уровням пользователя, следовательно публиковать.

Я открыл файл aspx вне решения, буквально только файл кода интерфейса, можно было сделать в блокноте или любом текстовом редакторе, включая VS. Прокомментировал весь код (код java не имеет значения, поскольку ничто его не вызывает) Сохранил файл и закрыл. Снова открыл решение. Несмотря на то, что дизайнерский вид открылся, на этот раз он не разбился, поскольку обрабатывать было нечего. Затем я раскомментировал код в разделах, различные объемы кода, 20 строк, 100 строк... каждый раз возвращаясь в представление конструктора, чтобы проверить, не произойдет ли сбой. Когда я закончил (никаких сбоев! Я смог продолжить с того места, на котором остановился. Надеюсь, это поможет!