У меня есть эта простая Userform, где у меня есть только TextBox1
и TextBox2
. Я ввожу в них текст. Предположим, что фокус включен (курсор находится) TextBox2
. Когда я нажимаю TextBox1
, я хочу, чтобы весь текст в этом элементе управления был выделен (выбран). Таким образом, я использую этот код:
Private Sub TextBox1_Enter()
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
MsgBox "enter event was fired"
End Sub
В конце загружается MsgBox
, что означает, что событие работает. Однако текст не подсвечивается. Как это исправить?
Я использую событие Enter
и не хочу использовать событие MouseDown
, потому что мне нужен код, который также работает, когда TextBox1
активируется программно, поэтому я чувствую, что событие Enter
лучший выбор, поскольку он выстрелил в обоих случаях! Еще один недостаток события MouseDown
: когда я нажимаю второй раз на TextBox1
, я бы не ожидал, что весь текст будет выделен больше, потому что фокус был установлен на первый клик, и он не был изменен после Во второй раз я нажал на один и тот же элемент управления; поэтому в этом случае я бы хотел, чтобы курсор работал нормально (не для того, чтобы текст был помечен).
Обновление
Когда я нажимаю один раз на TextBox1
, я ожидаю получить этот результат:
Если щелкнуть снова, подсветка будет удалена, и курсор будет помещен в то место, где он был нажат.