Я разместил этот комментарий по другому вопросу, но, поскольку это связано здесь, это снова.
Когда пользовательский элемент управления не загружается в конструктор Visual Studio, вам нужно сделать следующее. Эти инструкции предназначены для проекта vb.net, но C # должен быть похожим. Кроме того, перед этим закройте все открытые окна (или, по крайней мере, исходный и дизайнерский файлы элемента управления, над которым вы работаете).
Последняя вещь. Первое, что вам нужно сделать, это убедиться, что перезапуск Visual Studio не решит проблему. Если нет, вы можете попробовать следующие шаги. В этих инструкциях предполагается, что ошибочные пользовательские элементы управления находятся в проекте библиотеки элементов управления в Visual Studio. В противном случае вы сможете немного отрегулировать направления, чтобы заставить его работать, но это намного проще, когда элемент управления находится в отдельном проекте.
Сделайте следующее:
- Сделайте контрольную библиотеку своим стартовым проектом.
- Откройте свойства проекта библиотеки элементов управления и щелкните вкладку отладки.
- В разделе «Действие при запуске» выберите параметр «Запустить внешнюю программу» и перейдите к исполняемому файлу Visual Studio.
ПРИМЕЧАНИЕ: это означает, что когда вы запускаете свое решение, оно запускает другой экземпляр Visual Studio вместо фактического запуска вашего решения. Первый экземпляр Visual Studion (INSTANCE_1) будет «размещать» второй экземпляр Visual Studio (INSTANCE_2), когда вы его запустите.
- Запустите свое решение. INSTANCE_2 загрузится.
- Вернитесь к INSTANCE_1.
- В INSTANCE_1 нажмите CTRL-ALT-E. Это откроет диалоговое окно исключений. Установите флажок в столбце THROWN рядом с «Исключениями среды CLR».
ПРИМЕЧАНИЕ. Это гарантирует, что INSTANCE_1 будет ПРЕРЫВАТЬ при ЛЮБОЙ ошибке времени выполнения, даже если он попадет в блок попытки.
- Переключитесь на INSTANCE_2. В обозревателе решений дважды щелкните, чтобы открыть ошибочный пользовательский элемент управления.
Вы должны обнаружить, что INSTANCE_1 OF Visual Studio должен был остановиться на строке кода, из-за которой конструктор не загружал элемент управления. Исправьте код (что обычно означает тестирование IsNot Nothing перед ссылками на свойства объекта ... но может означать и другие вещи.)
Кроме того, иногда я обнаруживаю, что элемент управления БУДЕТ загружаться в INSTANCE_2 вместо того, чтобы прерывать ошибку в INSTANCE_1. В этом случае просто прекратите отладку ... закройте INSTANCE_2. Сохраните / перезапустите INSTANCE_1, и ваша проблема часто исчезнет.
Урок такой. Пользовательский элемент управления ДОЛЖЕН иметь возможность загружать / ссылаться на все объекты и их элементы, чтобы загрузить их в конструктор. Поэтому для пользовательских элементов управления, которые будут помещены в другие контейнеры, я обычно создаю события для уведомления родительского элемента, а не пытаюсь протолкнуть объекты в дочерний элемент управления.
Надеюсь, это поможет в будущем справиться с этим старым вопросом.
Сет
person
Seth Spearman
schedule
03.06.2009