Почему Me.components ничего не значит? - PullRequest
0 голосов
/ 05 февраля 2009

Я написал собственный ErrorProvider, который добавляет некоторые функциональные возможности к существующему ErrorProvider (устанавливает контроль BackColor, ErrorCount и т. Д.). Это была рабочая находка, но теперь по какой-то причине она падает на конструктор:

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

Ошибка - исключение NullReferenceException, вызванное тем, что Me.components - это Nothing. Может кто-нибудь пролить свет на то, почему коллекция компонентов формы была бы Ничем? Форма, кажется, работает отлично во всех отношениях!

Ответы [ 3 ]

2 голосов
/ 05 февраля 2009

Вы также можете перетащить ваш класс ErrorLogErrorProvider на поверхность разработки для вашего Form / UserControl, и код, сгенерированный для InitializeComponent, будет правильно инициализировать элемент компонентов и передавать его в конструктор вашего поставщика ошибок (VS делает это для всех невизуальных компоненты). Просто убедитесь, что ваш класс ErrorLogErrorProvider является производным от компонента или реализует интерфейс IComponent.

1 голос
/ 05 февраля 2009

при добавлении компонента в область конструктора он добавляет это в функцию InitializeComponent

me.components = new System.ComponentModel.Container()

так что просто добавьте это в себя.

или ваш

_LoginErrorProvider = New ErrorLogErrorProvider(Me.components)

вызывается перед InitializeComponent

0 голосов
/ 05 февраля 2009

Решено, добавление еще одного компонента в форму, кажется, решает проблему, это немного похоже, но работает. Я полагаю, что идеальным решением было бы добавить мой ErrorProvider в me.components, но для этого вам нужно инициализировать новый экземпляр, который вы не можете, потому что Me.components - это ничто !!

Это может свести человека с ума .....

...