Давайте поэкспериментируем немного с событиями кнопок элемента управления. Сделайте следующее.
1. Переключатель в окно UserControl и выполните на нем двойной щелчок, чтобы открыть окно Code.
2. Найдите события Initialize, InitProperties и Terminate в раскрывающемся списке справа. В каждое из них введите оператор Debug. Print с последующим именем события, как показано ниже.
Private Sub UserControl_Initialize()
Debug.Print "initializing control"
End Sub
Private Sub UserControl InitProperties()
Debug.Print "initializing properties"
End Sub
Private Sub UserControl_Terminate()
Debug.Print "terminating control"
End Sub
3. Закройте окно UserControl и возвратитесь к тестовой форме. Поместите экземпляр нового элемента управления на форму, и наблюдайте за окном проверки. Будут отображены следующие сообщения:
initializing control
initializing properties
При помещении элемента управления на форму сначала инициализируется сам элемент, а затем инициализируются его свойства.
Примечание
Операторы Print исполняются при переключении UserControl на тестовую форму. Даже тогда, когда приложение не запускается, код выполняется! Чтобы понять такое поведение, необходимо стать на место конструктора элемента управления ActiveX. Когда на форме размещается обычный элемент управления ActiveX, типа элемента TextBox, то выполняется некоторый код. Это то, что мы только что видели. Элементы управления ActiveX запускаются всегда, независимо от того, принадлежат ли они форме, которая выполняется, или нет. Как же еще проверить изменился ли у элемента управления шрифт или цвет фона, задаваемые разработчиком?
4. Теперь установите свойство Title и выполните тестовое приложение. Два новых сообщения появляются в окне проверки (сначала необходимо очистить текущее содержание окна проверки):
terminating control
initializing control
Элемент управления, который находился на форме в режиме конструирования, был удален, а новый — инициализирован. Все его свойства были инициализированы значениями по умолчанию, а значением по умолчанию для свойства