Что такое контекст выполнения для формы, открытой в конструкторе для приложения winforms - PullRequest
0 голосов
/ 12 июня 2009

У меня есть форма, которая не открывается в конструкторе. Я использовал технику, которую я упоминаю в ответе на эти вопросы ...

Конструктор Visual Studio WinForms не создает объект

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

Суть в том, что событие загрузки формы пытается загрузить некоторые пользовательские бизнес-объекты, которые получают данные из базы данных. Линия, которая терпит неудачу, ...

Dim connStr As String = ConfigurationManager.ConnectionStrings (connectionStringName) .ConnectionString

... это возвращает исключение нулевой ссылки. Он не может найти мою именованную строку подключения в вызывающем контексте открытия формы в конструкторе, пока он не находится в режиме разработки.

Почему это? Строка подключения находится в app.config проекта, в котором находится форма. Все, что я могу себе представить, это то, что Designer открывается в своем собственном контексте и не использует app.config проекта winforms. Фактически, в контексте прерывания ... диспетчер конфигурации содержит две строки подключения ... ни одна из которых не находится в моих проектах app.config. Они таковы ...

? Configurationmanager.ConnectionStrings (0) .ConnectionString "источник данных =. \ SQLEXPRESS; встроенная безопасность = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; пользовательский экземпляр = true"

и

? Configurationmanager.ConnectionStrings (1) .ConnectionString "data source =" | DataDirectory | \ aspnetdb.vdb3 ""

... Я упоминаю эти возможные подсказки. Ни одна из этих связок не является моей. Но каждый из них ссылается на двух провайдеров БД, которых я хочу поддержать в моем проекте ... sql и vistadb.

Все это говорит о том ... существует ли способ определения контекста выполнения, используемого конструктором, чтобы я мог добавить данные в app.config, чтобы он не сломался при этой ошибке. Или (лучше), есть ли способ заставить дизайнера использовать мой собственный app.config. Где находится app.config, используемый дизайнером?

Заранее спасибо за помощь.

Сет

1 Ответ

1 голос
/ 13 июня 2009

Оберните код, который нарушает конструктор в событии Load, следующим образом:

if ( this.Site == null || !this.Site.DesignMode )
{
... // code that breaks the designer
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...