Получение значения текстового поля в обработчике события изменения

Я написал форму, которая выполняет запросы асинхронноas text is typed однако в текстовое поле я, как бы то ни было, произвольно получаю следующее сообщение об ошибке: «Вы не можете ссылаться на свойство или метод для элемента управления, если элемент управления не имеет фокуса».

Сразу соответствующий код:

Dim UpdateRequested As Boolean
Dim qryText As String

.
.
.

Private Sub txtBox_Change()
    qryText = txtBox.Text
    UpdateRequested = true
End Sub

Некоторое место в эллипсах занимает код, который обрабатывает динамическую загрузку набора записей ADODB, заполнение локальной таблицы и обновление субформы. Тем не менее, даже когда я отключаю этот код, проблема остается: иногда я получаю сообщение об ошибке. Иногда нет.

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

Update

Просто чтобы сделать вещи более загадочными, я добавил пару простых обработчиков событий:

Private Sub txtBox_GotFocus()
    MsgBox "Got focus"
End Sub

Private Sub txtBox_LostFocus()
    MsgBox "Lost focus"
End Sub

Я запускаю форму. Я нажимаю в окне теста. Я получил "Получил фокус" сообщение. Как только я печатаю, я вижу ошибку, как описано выше. Если я снова открою форму, я могу щелкнуть между соответствующим текстовым полем (которое само по себе не связано) и связанным текстовым полем в подформе и увидеть оба варианта: «Получил фокус» и "потерял фокус" сообщения, как и следовало ожидать. Кроме того, отображается окно сообщения с текущим значением & quot; Screen.ActiveControl.Name & quot; показывает ожидаемое имя непосредственно перед обращением к свойству Text.

Ответы на вопрос(6)

Ваш ответ на вопрос