Держите фокус на текстовом поле после нажатия Enter - PullRequest
6 голосов
/ 14 июля 2011

Как сохранить фокус в текстовом поле после нажатия клавиши ввода в форме VBA?

Этот код добавляет текст в список, и я хочу сосредоточиться на текстовом поле, чтобы подготовиться к получению другого элемента.

Когда я нажимаю кнопку «Добавить», он добавляет текст в список и возвращает фокус в текстовое поле, однако, когда я нажимаю клавишу ввода, это не так, даже если он использует тот же код. Любое предложение?

Это мой код для текстового поля:

Private Sub TxtOtherAsset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = 13 Then
        CmdAddOtherAsset_Click
    End If

End Sub

и это код для моей кнопки:

Private Sub CmdAddOtherAsset_Click()

    If TxtOtherAsset.Text <> "" Then
        ListAddedAssets.AddItem TxtOtherAsset.Text
        TxtOtherAsset.Text = ""
    End If

    TxtOtherAsset.SetFocus

End Sub

Я пробовал несколько способов, но не могу вернуть фокус в текстовое поле. После нажатия клавиши ввода фокус переходит к следующему в TabIndex.

Ответы [ 2 ]

6 голосов
/ 14 июля 2011

В верхней части головы: попробуйте установить KeyCode в 0. Кроме того, используйте класс KeyCodeConstants (из библиотеки Core), чтобы определить, какое значение имеет ключ Enter.

Например:

If KeyCode = KeyCodeConstants.vbKeyReturn Then
    CmdAddOtherAsset_Click
    KeyCode = 0
End If

Удалите строку, на которой вы пытаетесь установить фокус на другом сабвуфере (TxtOtherAsset.SetFocus).

Надеюсь, она работает для вас.Я не проверял это.

1 голос
/ 14 июля 2011

Используете ли вы клавишу Enter в качестве триггера для отслеживания изменений в текстовом поле?Если это так, попробуйте событие после обновления.Также взгляните на событие On Exit.Когда я посмотрел, я заметил, что у него есть параметр Cancel.Если вы все еще хотите перехватить клавишу Enter в событии Key Down, вы можете использовать событие On Exit, чтобы не покинуть текстовое поле.Конечно, это, вероятно, означает, что вы навсегда застряли и, возможно, вам нужно настроить способ разрешения выхода.

...