Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как обработать нажатие Tab в TextBox-е Добавлено: 26.07.08 16:55  

Автор вопроса:  Smith | ICQ: adamis@list.ru 
Сто лет назад кажись делал как-то, голова дырявая.

Нужно чтоб при редактировании текста нажатие на таб добавляло в текст vbTab и не передавало фокус другому контролу.

VB6! Запарился просматривать ответы поисковика.

Ответить

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

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 26.07.08 17:03
попробуй включи keypreview, должно помочь

Ответить

Номер ответа: 2
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #2
Добавлено: 26.07.08 17:04
Пробовал

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 26.07.08 18:20
Ну обрабатывай KeyPress или что за события у час там есть и ставь Cancel=true

Как в VB6 не знаю, в VB .NET именно так

Ответить

Номер ответа: 4
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #4
Добавлено: 26.07.08 20:19
KeyPress в VB6 не получает нажатие на Tab.

Ответить

Номер ответа: 5
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #5
Добавлено: 27.07.08 04:27
Перерыл всё и вся, вдоль и поперек, нихрена не нашел, решил послать всё это на и сделать по своему, по простому.

Таб попадает даже в Text1_KeyPress, но только если ВСЕ контролы на форме (кроме нашего текстбокса естесно) отказываются принимать фокус по табу.

Короче TabStop = False им всем и всё тут.

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 27.07.08 13:22
В KeyDown & KeyUp наверняка Tab отлавливаться будет

Ответить

Номер ответа: 7
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #7
Добавлено: 27.07.08 14:31
Когда у всех контролов TabStop = False тогда да, отлавливается везде и всюду, где нужно и где ненужно.
А если на форме ещё хоть одна тварь требует табстопа, то хрен ты его выловишь, только апи асинккейстэйтом.

Ответить

Номер ответа: 8
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #8
Добавлено: 27.07.08 15:21
Когда у всех контролов TabStop = False тогда да, отлавливается везде и всюду, где нужно и где ненужно.
А если на форме ещё хоть одна тварь требует табстопа, то хрен ты его выловишь, только апи асинккейстэйтом.

- Точно.

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


хотим снять фокус с text1 - жмем tab с шифтом.
дальше всё как обычно.

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 27.07.08 16:26
А если на форме ещё хоть одна тварь требует табстопа, то хрен ты его выловишь

Не поверю... Я много лет назад делал это на VB6 и уверен что все решается гораздо проще и TabStop тут ваще не при делах.. ты наверняка что то не так делаешь..

Ответить

Номер ответа: 10
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #10
Добавлено: 27.07.08 16:55
Я уже 8 лет что-то не так делаю :) Если в этих восьми событиях можно что-то сделать не так, то я это как правило делаю.
Глюки самого разного калибра так и атакуют :)

Я много лет назад делал это на VB6

Так я и сам много лет назад делал это гораздо проще. А сейчас получается почти тоже самое что и у Сереги, правда у меня фокус отнять только мышкой можно.

Но с шифт-табом удобнее.
Спасибо!

Ответить

Номер ответа: 11
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #11
Добавлено: 27.07.08 16:57
EROS вспомни каким сервиспаком ты пользовался, у меня VB6 SP5. Это тоже может иметь значение.

Ответить

Страница: 1 |

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



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