Невозможно открыть winform с пользовательским контролем в режиме конструктора

В проекте, над которым я работаю, я переместил все файлы ресурсов winforms (только со строками) в библиотеку ресурсов, которая также имеет статический класс, загружающий все строки файлов ресурсов в память при запуске проекта, и каждый form получает от него свои строки.

У меня есть одна winform с парой пользовательских элементов управления, которые также обращаются к этой dll для своих строк. Когда я пытаюсь открыть эту форму в режиме конструктора, я получаю следующую ошибку для каждого пользовательского элемента управления:

«Переменная 'control_name' либо не объявлена, либо никогда не назначалась»

Я все еще могу запустить проект без каких-либо проблем.

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


person Guy    schedule 16.04.2012    source источник


Ответы (2)


Как я уже упоминал в предыдущем комментарии, мне удалось решить проблему. Вместо доступа к dll ресурсов из пользовательского элемента управления я изменил каждую из функций элементов управления на общедоступные и вызвал эти функции из winform.

person Guy    schedule 16.04.2012

Сначала попробуйте простое решение:
выполните Сборка->Перестроить решение. Закройте Visual Studio и снова откройте. Это может произойти, если пользовательский элемент управления выдал исключение во время создания во время разработки. Это прояснилось только после перезапуска Visual Studio. (Visual Studio 2008 с пакетом обновления 1)

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

Чтобы исправить эту ошибку: Объявите или назначьте переменную, указанную в сообщении об ошибке.

http://msdn.microsoft.com/en-us/library/4008y84t.aspx

person Dor Cohen    schedule 16.04.2012
comment
Я собирал и перестраивал решение бог знает сколько раз, но безрезультатно. Когда я отмечаю вызовы функций dll в пользовательских элементах управления, мне удается открыть winform в представлении дизайна. Может ли это иметь какое-либо отношение к тому, что класс является статическим? - person Guy; 16.04.2012
comment
@Guy Можете ли вы прикрепить пользовательский элемент управления? - person Dor Cohen; 16.04.2012
comment
Задача решена. Функции, которые обращаются к dll ресурсов, теперь вызываются из winform, а не из пользовательских элементов управления. - person Guy; 16.04.2012