Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: В каком событии словить нажатие клавишь? Добавлено: 19.11.06 12:57  

Автор вопроса:  Solomka | Web-сайт: solomka.narod.ru
Здравствуйте, подскажите пожалуста...
Как в Visual Studio 2005 словить одновременное нажатие клавиш "Alt" + "Р" для формы (это не должно зависеть от какого-либо элемента на форме, т.к. как на одной форме несколько элементов управления, а на другой форме только один рисунок)? И как словить одновременное нажатие клавиш "Alt" + "L" для textBox'a? В каком событии всё это можно реализовать?

Ответить

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

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



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 19.11.06 13:38
Это делается в событии KeyDown или KeyUp. В эту процедуру в качестве параметра передается аргумент типа System.Windows.Forms.KeyEventArgs. Вот именно в нем и заложена вся информация о нажатых в данный момент клавишах (в т.ч. и Alt). И это событие есть как для формы, так и для текстового поля..

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 19.11.06 17:20
А если охото глобальный хук на клаву, в .нете есть встроенные фишки какие-то?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 19.11.06 19:24
На счет глобального не знаю, не приходилось сталкиваться, но наверняка что-то есть.. Знаю только что есть такая штука как My.Computer.Keyboard (Microsoft.VisualBasic.Devices.Keyboard), из которой в любой момент можно вытащить состояние клавиатуры (хоть по таймеру), но это хуком не назовешь, скорее всего надо перехватывать события..

Ответить

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



Вопросов: 13
Ответов: 23
 Web-сайт: solomka.narod.ru
 Профиль | | #4
Добавлено: 21.11.06 21:45
Получилось перехватить нажатие клавиш "Alt" + "Р" в событии KeyDown для формы.
Только не совсем так как хотелось...
Вызыветься определенная функция, если нажимать последовательно "Alt", а потом "Р", или наоборот...
А как сделать, чтобы эта функция вызывалась при одновременном нажатии?

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 21.11.06 23:31
Public Class frmMain

    Private Sub frmMain_Load(ByVal sender As Object, _
                             ByVal e As System.EventArgs) Handles Me.Load

        '// Без этой строки события клавиатуры отлавливаться не будут!
        Me.KeyPreview = True

    End Sub

    Private Sub frmMain_KeyDown(ByVal sender As Object, _
                                ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        '// Ловим нужную комбинацию
        If e.Alt And e.KeyCode = Keys.P Then

            '// Твой код
            MessageBox.Show("Keys 'Alt' & 'P' was pressed!";)
        End If

    End Sub

End Class

Ответить

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



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #6 Добавлено: 22.11.06 12:24
А если охото глобальный хук на клаву, в .нете есть встроенные фишки какие-то?

Цитата с книги (смотри в теме "модификация PropertyGrid";)
...В классической версии Visual Basic была процедура WndProc, которая получала
и обрабатывала сообщения, но разработчики не имели к ней доступа. Теперь у нас
есть доступ к процедурам не только в форме, но и в ее базовых классах, так что
мы легко можем их переопределить. В окне с кодом формы в левом выпадающем
списке выберите Override (переопределить). После этого левый выпадающий спи-
сок будет показывать все доступные для переопределения свойства и методы.
Последним в этом списке будет WndProc (рис. 1-11). Щелчок на ней создаст про-
тотип кода для обработчика событий WndProc.
Эта процедура — ядро нашего простого приложения. Теперь мы можем пере-
хватить и перенаправить любое сообщение Windows, которое нам может потре-
боваться...

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 22.11.06 17:07
А какое отношение WndProc имеет к глобальному хуку? Это давно известная фишка, но она позволяет перехватить только те сообщения, которые получает ТВОЕ приложение, но не более..

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 22.11.06 17:39
не приложение, а окно.

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 22.11.06 17:45
ну да.. имеено о нем я и говорил.. )))

Ответить

Страница: 1 |

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



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