2015-12-16 2 views
0

У меня есть UserForm, который использует несколько элементов ListBox, а также элементы управления TextBox. У меня установлен порядок табуляции, поэтому пользователь может вставлять элементы управления в последовательном порядке. Я также написал функцию проверки пустых и невыбранных элементов управления, заставляя пользователя заполнить форму целиком и поэтому хочу, чтобы все контрольные значения были пустыми до тех пор, пока пользователь не встанет на этот элемент управления и не наберет значение, чтобы гарантировать, что элемент управления не был " все выглядело.Управление вызовом введите событие после повторного ввода

У меня есть ListBox (n) .Listindex defualt to 0 при событии Control_Enter, а не -1. Это позволяет пользователю легко вставлять в элемент управления и вводить в список список. Это работает на первую запись с помощью следующего кода:

Private Sub ListBox1_Enter() 
Me.ListBox1.ListIndex = 0 
End Sub 

При подаче данных формы, т.е. CommandButton1_Click(), данные помещаются в таблицу, все значения управлений очищаются и фокус помещается обратно на первом контроль в форме. Однако, когда элементы управления ListBox включены в таблицу, значения по умолчанию для ListIdex возвращаются к -1. Почему не срабатывает событие Control_Enter?

ответ

0

Событие Control_Enter происходит непосредственно перед тем, как элемент управления получает фокус, например, путем нажатия на элемент управления. Однако это не повторится, пока пользователь не выйдет из этого элемента управления. Если вы хотите обработать некий вид , введите повторно, тогда вам понадобится программно выйти из элемента управления. Я считаю, что установка фокуса на другой элемент управления сделает это, например CommandButton1.SetFocus.

Однако я не могу не думать о том, что интерфейс пользователя будет нечетным. Изменение элемента управления, когда пользователь выбирает его, может привести к тому, что пользователь неправильно интерпретирует свои действия с интерфейсом или, как если бы приложение оказалось вне его контроля.

Я пытаюсь понять, почему вы не устанавливали значения ListBox, когда приложение запускается, а затем всякий раз, когда вы обрабатываете его выбор. Предположительно есть некоторый код, который обрабатывает значения ListBox, возможно даже вызванные каким-то ВыполнениеCommandButton. Я бы сбросил значения по умолчанию в конце этого кода. Таким образом, у пользователя будет сигнал, что его выбор был успешно обработан.

+0

Я отредактировал этот вопрос, пытаясь выяснить, чего я пытаюсь достичь. Я использовал Control.SetFocus без везения. Я также хочу, чтобы значения ListBox были очищены до тех пор, пока пользовательская вкладка не войдет в элемент управления, чтобы я знал, что пользователь посетил каждое поле в форме до отправки данных. –

Смежные вопросы