System.ComponentModel.Design.ExceptionCollection - PullRequest
22 голосов
/ 06 марта 2012

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

Исключение типа 'System.ComponentModel.Design.ExceptionCollection' выдано

И я не могу понять, что я делаю неправильно. Кто-нибудь работал с этим элементом управления и знает, как решить эту проблему?

Ответы [ 6 ]

33 голосов
/ 06 марта 2012

Интересный;Я только столкнулся с той же самой проблемой с одной из моих собственных форм;вот как я нашел ваш актуальный и недавний вопрос.

Вот как я решил его:

  1. Откройте два экземпляра Visual Studio.Откройте один и тот же проект в обоих.
  2. В одном случае перейдите в раздел «Отладка-> Исключения» и включите все параметры «Брошенный», чтобы остановить при первом же исключении.Это остановит отладчик при создании исключения.
  3. В этом же экземпляре выберите Debug-> Attach to Process, выберите devenv.exe.
  4. В другом экземпляре откройте форму длявызвать исключение
  5. Если повезет, первый экземпляр должен остановиться где-нибудь, что приведет к более значимому исключению.

В моем случае это оказалось чем-то, что я должен был обусловить:

if (!DesignMode)
{
  // Do something that should only happen at runtime
}

Не забудьте отключить все эти опции «Брошенные» позже.

4 голосов
/ 19 апреля 2012

Поскольку решение , представленное pilotcam , у меня не сработало, Я выбрал другой подход :

  1. Создание SVN-коммита для файла.
  2. Откройте файл «* .designer.cs» формы, в которой отображается ошибка в представлении исходного кода.
  3. Удалите большие блоки объявлений элементов формы.
  4. Исправьте всеошибки компиляции с помощью ReSharper (т.е. убедитесь, что на боковом индикаторе больше нет красного).
  5. Сохраните файл.Нет необходимости компилировать.
  6. Откройте конструктор форм Windows Forms формы.
  7. Если ошибка все еще появляется, выполните возврат SVN, чтобы вернуться в исходное состояние.
  8. Повторяйте шаги 2–7 до тех пор, пока ошибка не исчезнет.
  9. Теперь вы обвели ошибочный дочерний элемент управления, вызывающий ошибку.
  10. Повторите шаги 2–7 с меньшим количествомэлементов управления, которые вы удаляете до тех пор, пока у вас не останется только один элемент управления.

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

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

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

3 голосов
/ 16 февраля 2016

Обходной путь для меня был:

  1. Щелкните правой кнопкой мыши на форме и выберите «Просмотр кода»
  2. Сохраните код загруженным в редакторе и попробуйте снова просмотреть конструктор.

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

2 голосов
/ 05 февраля 2015

У меня возникла та же проблема, и ни один из приведенных выше ответов не решил ее.

В конце концов, очистка папки "bin" и перестройка сработала для меня.

0 голосов
/ 27 апреля 2017
[ReadOnly(true)]

[Browsable(false)]

Прежде всего свойства работали для меня

0 голосов
/ 04 июля 2014

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

  1. Когда невозможно скомпилировать пользовательский элемент управления.
  2. Когда код конструктора содержит несколько похожих (или идентичных) строк с инициализацией одинаковых элементов управления или свойств, это может легко произойти при слиянии.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...