Проблема с клавишей Shift

Я новичок в VB, но сейчас работаю над проектом VB. Я столкнулся со странной проблемой с Shift-Tab.

Порядок табуляции правильный, он проходит через все текстовые поля, флажки и т. Д. До кнопок «Принять» и «Отменить» в конце формы, а затем возвращается к началу формы.

Однако если вы нажмете Shift-Tab, кнопки «Принять» и «Отменить» будут пропущены. Тем не менее, он работает правильно для всех остальных элементов управления.

Индексы вкладок мне кажутся правильными.

Кто-нибудь знает, в чем может быть причина? Я в своем уме, поэтому любая помощь будет принята с благодарностью.


person user1927182    schedule 24.12.2012    source источник
comment
Являются ли кнопки нижнего колонтитула частью пользовательского UserControl?   -  person wqw    schedule 25.12.2012
comment
Да, кнопка «Принять» и «Отменить» является настраиваемым элементом управления UserControl. По сути, элемент управления представляет собой нижний колонтитул, состоящий из кнопок «Принять» и «Отмена».   -  person user1927182    schedule 25.12.2012
comment
Это конструктивное поведение. На Tab или Shift-Tab фокусируется первый элемент управления UserControl. Вы можете проверить нажатие Shift и сфокусироваться на последнем вручную.   -  person wqw    schedule 25.12.2012


Ответы (1)


Проверьте наличие Shift + Tab в событии EnterFocus из UserControl, как это

Option Explicit

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal VKey As Long) As Integer

Public Function IsKeyPressed(ByVal lVirtKey As KeyCodeConstants) As Boolean
    IsKeyPressed = ((GetAsyncKeyState(lVirtKey) And &H8000) = &H8000)
End Function

Private Sub UserControl_EnterFocus()
    If IsKeyPressed(vbKeyTab) And IsKeyPressed(vbKeyShift) Then
        cmdCancel.SetFocus
    End If
End Sub
person wqw    schedule 25.12.2012
comment
Спасибо за вашу помощь. Это очень информативно и имеет смысл для меня, однако код по-прежнему не работает. EnterFocus () срабатывает только при нажатии клавиши Tab через элемент управления, но никогда не срабатывает при нажатии Shift + Tab. - person user1927182; 26.12.2012
comment
Ваш нижний колонтитул UserControl вложен в другой UserControl формы? Также реализуйте его событие EnterFocus. - person wqw; 02.01.2013