Страница: 1 |
|
Вопрос: KeyDown
|
Добавлено: 17.09.03 16:47
|
|
Автор вопроса: Артём Л. | ICQ: 280044491
|
нужно что бы при нажатии в текстбоксе кнопок вверх или вниз отрабатывало нормальное событие нажатие (KeyDown,KeyPress), то есть: как перехватить это событие?
Ответить
|
Номер ответа: 1 Автор ответа: crackoff
ICQ: 156165990
Вопросов: 12 Ответов: 229
|
Профиль | | #1
|
Добавлено: 17.09.03 17:28
|
Используй eclare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer Public Const VK_UP = &H26 Public Const VK_DOWN = &H28 Ставишь таймер с задержкой 100 мс и смотришь: if GetAsyncKeyState (VK_UP) then ... if GetAsyncKeyState (VK_DOWN) then ....
Ответить
|
Номер ответа: 2 Автор ответа: Артём Л.
ICQ: 280044491
Вопросов: 43 Ответов: 227
|
Профиль | | #2
|
Добавлено: 17.09.03 17:42
|
а тормозить меня этот таймер не будет? и что-то мне не очень нравиться этот способ. А если мне нужно что б каждый из, допустим, 100 текстбоксов (и не только текстбоксов) реагировал по-своему на это событие? кроме того это событие таки не перехватывается, так как текстбокс все равно это событие получает и обрабатывает по-своему, то-есть курсор в нем ходит взад-вперед...
Ответить
|
Номер ответа: 3 Автор ответа: ol2003
Вопросов: 3 Ответов: 122
|
Профиль | | #3
|
Добавлено: 17.09.03 17:54
|
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPressIf e.KeyChar = ChrW(38) Then 'arrow upElseIf e.KeyChar = ChrW(40) Then 'arrow downEnd IfEnd SubСписок констант в HELP в Key Code Constant Changes in Visual Basic .NET
Ответить
|
Номер ответа: 6 Автор ответа: crackoff
ICQ: 156165990
Вопросов: 12 Ответов: 229
|
Профиль | | #6
|
Добавлено: 17.09.03 19:55
|
>курсор в нем ходит взад-вперед... А вот я не знаю, как сделать так, чтобы не ходил. Вот еще как вариант. Используй PictureBox. Перехватывай кнопка и методом print с заранее установленым нужным тебе шрифтом выводи то, что надо. Ща попробую, самому интересно стало..
Ответить
|
Номер ответа: 7 Автор ответа: crackoff
ICQ: 156165990
Вопросов: 12 Ответов: 229
|
Профиль | | #7
|
Добавлено: 17.09.03 20:02
|
Конечно, работает! Private Sub Picture1_KeyPress(KeyAscii As Integer) Picture1.Print Chr(KeyAscii); End Sub А курсор можешь и сам рисовать. У PictureBox есть свойства CurrentX и CurrentY а тж метод Line. Рисуешь, допустим, в процедуре таймера с задержкой 1 сек. (только, по-моему, Line меняет эти самые CurrentX и CurrentY, так что предусмотри их сохранение)
Ответить
|
Номер ответа: 11 Автор ответа: Артём Л.
ICQ: 280044491
Вопросов: 43 Ответов: 227
|
Профиль | | #11
|
Добавлено: 18.09.03 20:51
|
а на другом форуме мне ешо подсказали : Ok, so you want to catch the up or down keys, but prevent them from reaching the textbox. You can do that by trapping the key events at the form level and handling them there. To do this, first set your form's KeyPreview property to True. Then add some code like this: Private Sub FormMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown If myTextBox.ContainsFocus Then If e.KeyValue = Keys.Up OrElse e.KeyValue = Keys.Down Then 'add your code for whatever you want to do here e.Handled = True End If End If End Sub The code above handles a KeyDown event for your form. Then it checks if your text box has focus. If so it checks for the up or down arrow keys. If those keys are pressed, then it would run your code and set the event to handled. This way the event isn't passed on to the control with focus. If the control that has focus isn't your text box, or its not the up/down arrow key, the key event is processed normally.
Ответить
|
Страница: 1 |
Поиск по форуму