Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Обработка нажатия Tab Добавлено: 15.12.09 00:02  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
У меня на форме есть TextBox. Мн необходимо отловить нажатие пользователем на клавишу Tab.
По непонятным мне причинам событие нажатия на эту клавишу в Text1_KeyPress, Text1_KeyDown не ловится. На этом форуме нашёл решение проблемы - отключить TabStop во всех контролах на форме. После этого событие нажатия на эту нужную клавишу начинает ловиться. Код таков:

Private Sub Text1_GotFocus()
For Each Control In Me.Controls
    Control.TabStop = False
Next Control
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyShift Then
    For Each Control In Me.Controls
        Control.TabStop = True
    Next Control
End If
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyShift Then
    For Each Control In Me.Controls
        Control.TabStop = False
    Next Control
End If
End Sub
Private Sub Text1_LostFocus()
For Each Control In Me.Controls
    Control.TabStop = True
Next Control
End Sub


В принципе всё меня устраивает в этом решении вопроса, кроме одного: При каждом нажатии клавиши компьютер пикает (подаёт звуковой сигнал аналогичный BEEP). Что делать? Помогите.
P.S. Решения по типу: отключить звук в колонках, купить бирюльки или не обращать на это внимание - просьба не предлагать!

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 15.12.09 09:11
  1. For Each Control In Me.Controls
  2.     Control.TabStop = False
  3. Next Control

Это надо выполнить ВСЕГО ОДИН раз. При загрузке формы.

Ответить

Номер ответа: 2
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #2
Добавлено: 15.12.09 10:15
Я не уточнил, что ловить клавишу Tab мне надо только в текстбоксах, причём определённых, поэтому и отключать TabStop требуется на время. Но суть не в этом и вопрос не о том. Как отключить BEEP при нажатии на эту клавишу: хоть один раз отключай табстопы, хоть десять - всё равно сигнал звучит.

Ответить

Номер ответа: 3
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #3 Добавлено: 17.12.09 13:02
Ставьте локальный клавиатурный хук, например. В сети полно информации на эту тему...

Ответить

Номер ответа: 4
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #4
Добавлено: 17.12.09 14:53
Я уже нашёл ответ - всё до безобразия просто. Надо просто при обработке события нажатия клавиши проставить keycode=0.
И всё

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 17.12.09 17:27
блин) сам подобное использую. что-то стормозил

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 17.12.09 22:50
Афигеть)))) Прикольные у вас танцы с бубном вокруг трупа VB6 ))) Жжоте, пешите исчо!

Ответить

Номер ответа: 7
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #7
Добавлено: 17.12.09 23:08
Интересно? Что хотел сказать этим Этот Великий Гуру? Может быть, насколько Он крут? Так никто с этим и не спорил, во всяком случае в этой теме. Но чтоб Ему стало легче, давайте Ему поапплодируем стоя...

---===звучат длительные апплодисменты, переходящие в бурные авации===---

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 18.12.09 01:44
EROS, давай я тебе лучше расскажу про более крутые вещи которые можно делать с трупами)
Захучил я мышь и клаву. Долго радовался, и неожиданно осознал, что если прога делает что-то длительное, то не может обрабатывать хуки и всё подвисает включая курсор. Долго ли, коротко ли, но вчера я сделал многопоточность и теперь всё охрененно стало. Но ведь известно, что мультитрединг+vb6=пустое_множество. Поэтому я выделил хуки в отдельную программу, которая отсылает основной проге сообщения через PostMessage. Вот так вот.

Ответить

Номер ответа: 9
Автор ответа:
 VerhoLom



Вопросов: 20
Ответов: 285
 Профиль | | #9 Добавлено: 18.12.09 14:25
Winand пишет:
 Winand

Поддерживаю!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам