C # WinForms, что это за странная ошибка? - PullRequest
1 голос
/ 20 января 2011

Я новичок в C # WinForms.Я сделал класс (EnhancedForm), который наследует класс Form.В EnhanceForm я поместил некоторые общие функции (такие как валидации, часто используемые объекты, такие как DataTable, строковые переменные и т. Д., Чтобы мне не приходилось кодировать одно и то же снова и снова в формах), которые я хочу использовать во всех формах и рядом со всемиформы наследуют это (EnhancedForm).

В DAL (отдельная библиотека классов) у меня есть класс CommonDB класса, который имеет общие функции, связанные с БД.Для связи с базой данных я делал объект CommonDB во всех формах.Я думал поместить CommonDB в EnhancedForm, чтобы мне не приходилось создавать его объекты во всех классах.

Вот что происходит, что я не могу понять.Приложение работает нормально.Но если я пытаюсь открыть форму в режиме конструктора, выдает ошибку. "Ссылка на объект не установлена ​​для экземпляра объекта." Не удалось просмотреть форму в разработанном режиме.Если я удаляю объект CommonDb из EnhancedForm и помещаю его в отдельные формы, он работает нормально и позволяет просматривать формы.

Если я компилирую и запускаю, эта ошибка не появляется.Пожалуйста, направьте и помогите мне в этом.

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 января 2011

У вас есть код в EnhancedForm, который принимает объект CommonDb. Во время выполнения вы создаете это (вероятно, в Form_Loaded), но во время разработки оно отсутствует.

Предпочтительно, весь ваш код, обращающийся к CommonDb, должен проверять наличие нуля и / или this.DesignMode

1 голос
/ 20 января 2011

Кажется, что вы инициируете свой класс CommonDB внутри конструктора вашей базовой формы.Visual Studio использует Reflection для отображения форм в режиме конструктора, что вызывает вызов конструктора формы.Вы можете попробовать просто перестроить проект, чтобы увидеть, видите ли вы формы в режиме конструктора, но я не думаю, что это сработает.

...