Страница: 1 |
Страница: 1 |
Вопрос: Как отловить нажатие на Tab
Добавлено: 07.03.06 19:43
Автор вопроса: mich | Web-сайт:
На форме только текстовое поле (multiline=false).
Нужно по нажатию "Tab" дописывать строку. Помогите, а?
Ото третий мой вопрос без ответа останется.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #1
Добавлено: 08.03.06 16:59
Если надо когда форма активна и фокус на этом текстовом поле, тогда
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 9 Then
'код программы
End If
End Sub
если надо когда таб нажата, не зависимо от активного текстого поля, то апи GetAsyncKeyState(ставь в таймер на 50, примерно)
если чтобы при активной форме, но фокус не на текстовом поле, то
if GetActiveWindow=me.hwnd and GetAsyncKeyState(9)<>0 then
'программа
end if
Номер ответа: 2
Автор ответа:
SL
ICQ: 277007669
Вопросов: 10
Ответов: 86
Профиль | | #2
Добавлено: 08.03.06 17:00
По, крайней мере, так на vb6 можно
Номер ответа: 3
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #3
Добавлено: 09.03.06 09:33
Да на vb6 можно. А в Net даже WndProc не ловит.
И поток ради этого(GetAsyncKeyState) не хочется создавать. Вобщем вопрос открыт.
Номер ответа: 4
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #4
Добавлено: 09.03.06 09:36
Кстати, TextBox в фокусе.
Номер ответа: 5
Автор ответа:
.::EclipsE::.
ICQ: 208952501
Вопросов: 22
Ответов: 85
Профиль | | #5
Добавлено: 09.03.06 10:51
If e.KeyCode = Keys.Tab Then
'Код проги
End If
End Sub
Номер ответа: 6
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #6
Добавлено: 12.03.06 22:04
Да, первым делом так пробовал. -Не работает!
Номер ответа: 7
Автор ответа:
.::EclipsE::.
ICQ: 208952501
Вопросов: 22
Ответов: 85
Профиль | | #7
Добавлено: 13.03.06 10:38
У меня все работает. Мож у тя в TextBox1 нет фокуса во время нажатия?
Номер ответа: 8
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #8
Добавлено: 14.03.06 10:31
В том и прикол. Два первых способа не работают:
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Tab Then MsgBox("TAB !!!"
End Sub
'2
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(9) Then MsgBox("TAB !!!"
End Sub
А вот это сработало:
'3
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If e.KeyCode = Keys.Tab Then MsgBox("TAB !!!"
End Sub