System.ComponentModel.Design.ExceptionCollection

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

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

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

6 ответов

Решение

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

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

  1. Откройте два экземпляра Visual Studio. Откройте один и тот же проект в обоих.
  2. В одном случае, перейдите к Debug->Exceptions и включите все опции Thrown, чтобы остановить при первом же исключении. Это остановит отладчик, когда будет сгенерировано исключение.
  3. В том же экземпляре выберите "Отладка" -> "Присоединить к процессу", выберите devenv.exe.
  4. В другом случае откройте форму, чтобы вызвать исключение
  5. Если повезет, первый экземпляр должен остановиться где-нибудь, что приведет к более значимому исключению.

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

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

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

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

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

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

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

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

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

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

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

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

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

[ReadOnly(true)]

[Browsable(false)]

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

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

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

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

Другие вопросы по тегам