У меня есть форма в MS Access с изображением. Изображение имеет событие Click, которое открывает модальную форму. Модальная форма имеет кнопки «ОК» и «Отмена». Когда вы нажимаете кнопку OK, должно срабатывать событие, которое сообщает основной форме, какая кнопка была нажата. (Это для имитации функциональности DialogResult в C#). Однако код в обработчике событий никогда не запускается.
Модальная форма имеет следующее в общих объявлениях:
Public Event OnDialogBoxClose(NewRecordID As Long, DialogResult As DialogResults)
и следующий код, где нажимается кнопка OK:
RaiseEvent OnDialogBoxClose(NewHardwareBaseItemID, dlgresBtnOKClicked)
Основная форма имеет в общих объявлениях следующее:
Dim WithEvents RespondQuickAddClose As Form_qckfrmHardwareBaseItemCreate
и следующий обработчик событий:
Private Sub RespondQuickAddClose_OnDialogBoxClose(NewRecordID As Long, DialogResult As DialogResults)
MsgBox "Responding to closing of the dialog box" 'Never happens
Me.Requery
End Sub
Может кто-нибудь объяснить, почему обработчик событий никогда не вызывается? Спасибо!
Задний план:
Цель всего этого — позволить модальному диалоговому окну добавить запись, а затем вернуть идентификатор записи обратно в основную форму, чтобы установить значение элементов управления. Например, представьте, что вы заполняете форму страховки, и вам нужно выбрать марку автомобиля, которой там нет. Вы нажимаете на значок, который появляется с модальным диалоговым окном, позволяющим добавить марку автомобиля. Затем, когда вы нажмете «ОК», вы вернетесь к форме страхования и выберете марку автомобиля, которую вы только что создали.
Это соответствует примеру, который я нашел здесь: http://database.itags.org/ms-access-database/80292/