У меня есть эта простая 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
, я бы не ожидал, что весь текст будет выделен больше, потому что фокус был установлен на первом клике, и он не изменился после того, как я нажал на тот же контроль во второй раз; поэтому в этом случае я бы хотел, чтобы курсор работал нормально (чтобы не помечать текст).
Update
Когда я один раз нажать на TextBox1
, я ожидаю получить этот результат:
Если нажата снова, подсветка будет удалена, и курсор будет помещен в том месте, где это было щелкнул.
Мне не удалось воспроизвести вашу проблему, поскольку ваш код уже работал на меня, даже если он используется программно! – R3uK
У вас уже есть свойство для этого имени 'EnterFieldBehavior'. Вам просто нужно установить его в 'fmEnterFieldBehaviorSelectAll'. Это значение по умолчанию для этого свойства, поэтому вам не нужно ничего делать, если вы не изменили значение свойства. Он должен работать без какого-либо кода. –
@ R3uK Я не знаю, почему, но наличие вышеописанного кода для меня не работает - текст не выбран по щелчку. Как сказал [@vacip] (http://stackoverflow.com/users/4713729/vacip), причиной может быть то, что фактическое (скрытое) событие * click * происходит после события Enter, и это просто отменяет выбор. – ZygD