Разрабатываю базу данных доступа MS (2016).
У меня есть основная форма (с именем MF), которая имеет большое количество элементов управления, включая одну подчиненную форму. Эта подчиненная форма называется SF и связана с двумя элементами управления на MF. Эти элементы управления называются C1 и C2.
Когда загружен MF, SF не отображается.
Когда C1 или C2 находятся в фокусе, видимость SF устанавливается на True
.
Теперь мне нужно:
1. Чтобы установить видимость SF на False
, когда C1 или C2 потеряли фокус для других элементов управления, кроме SF.
2. Чтобы установить для SF видимость False
, когда он теряет фокус для любых элементов управления на MF, кроме C1 и < сильный> C2.
Вначале это казалось простым и казалось прямым, но это не так.
Я использовал:
Private Sub C1_GotFocus()
Me.SF.Visible = True
End Sub
Private Sub C2_GotFocus()
Me.SF.Visible = True
End Sub
Private Sub C1_LostFocus()
Me.SF.Visible = False
End Sub
Private Sub C2_LostFocus()
Me.SF.Visible = False
End Sub
Private Sub SF_LostFocus()
Me.SF.Visible = False
End Sub
Теперь, если C1 или C2 теряет контроль над SF, он исчезает, и я не могу выбрать нужную мне информацию для C1 и C2.
Также, если SF теряет фокус для C1 и C2, он исчезает.
Казалось, что это легко исправить с помощью нескольких операторов if
, однако это не так.
Проблема в том, что новый элемент управления, который получает фокус, НЕ предсказуем по событию LostFocus()
. Следовательно, сделать это так сложно.
Я поискал в сети решение и не нашел ничего, что можно было бы использовать.
обходным путем было бы опустить события LostFocus()
для C1, C2 и SF и установить для всех остальных элементов управления значение MF strong > который получает фокус, чтобы скрыть SF.
Хотя это работает так, как мне нужно, это не практическое решение.
Есть ли более простой и рациональный способ добиться этого?
Помните, что в основной форме слишком много элементов управления, чтобы их можно было кодировать таким образом.
Спасибо.