Страница: 1 |
Вопрос: В каком событии словить нажатие клавишь? | Добавлено: 19.11.06 12:57 |
Автор вопроса: ![]() |
Здравствуйте, подскажите пожалуста...
Как в Visual Studio 2005 словить одновременное нажатие клавиш "Alt" + "Р" для формы (это не должно зависеть от какого-либо элемента на форме, т.к. как на одной форме несколько элементов управления, а на другой форме только один рисунок)? И как словить одновременное нажатие клавиш "Alt" + "L" для textBox'a? В каком событии всё это можно реализовать? |
Ответы | Всего ответов: 9 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #1 | Добавлено: 19.11.06 13:38 |
Это делается в событии KeyDown или KeyUp. В эту процедуру в качестве параметра передается аргумент типа System.Windows.Forms.KeyEventArgs. Вот именно в нем и заложена вся информация о нажатых в данный момент клавишах (в т.ч. и Alt). И это событие есть как для формы, так и для текстового поля.. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #2 | Добавлено: 19.11.06 17:20 |
А если охото глобальный хук на клаву, в .нете есть встроенные фишки какие-то? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #3 | Добавлено: 19.11.06 19:24 |
На счет глобального не знаю, не приходилось сталкиваться, но наверняка что-то есть.. Знаю только что есть такая штука как My.Computer.Keyboard (Microsoft.VisualBasic.Devices.Keyboard), из которой в любой момент можно вытащить состояние клавиатуры (хоть по таймеру), но это хуком не назовешь, скорее всего надо перехватывать события.. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 23 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 21.11.06 21:45 |
Получилось перехватить нажатие клавиш "Alt" + "Р" в событии KeyDown для формы.
Только не совсем так как хотелось... Вызыветься определенная функция, если нажимать последовательно "Alt", а потом "Р", или наоборот... А как сделать, чтобы эта функция вызывалась при одновременном нажатии? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ![]() ICQ: 299287824 Вопросов: 76 Ответов: 209 |
Профиль | Цитата | #6 | Добавлено: 22.11.06 12:24 |
А если охото глобальный хук на клаву, в .нете есть встроенные фишки какие-то?
Цитата с книги (смотри в теме "модификация PropertyGrid" ![]() ...В классической версии Visual Basic была процедура WndProc, которая получала
и обрабатывала сообщения, но разработчики не имели к ней доступа. Теперь у нас есть доступ к процедурам не только в форме, но и в ее базовых классах, так что мы легко можем их переопределить. В окне с кодом формы в левом выпадающем списке выберите Override (переопределить). После этого левый выпадающий спи- сок будет показывать все доступные для переопределения свойства и методы. Последним в этом списке будет WndProc (рис. 1-11). Щелчок на ней создаст про- тотип кода для обработчика событий WndProc. Эта процедура — ядро нашего простого приложения. Теперь мы можем пере- хватить и перенаправить любое сообщение Windows, которое нам может потре- боваться... |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #7 | Добавлено: 22.11.06 17:07 |
А какое отношение WndProc имеет к глобальному хуку? Это давно известная фишка, но она позволяет перехватить только те сообщения, которые получает ТВОЕ приложение, но не более.. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #8 | Добавлено: 22.11.06 17:39 |
не приложение, а окно. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #9 | Добавлено: 22.11.06 17:45 |
ну да.. имеено о нем я и говорил.. ))) |
Страница: 1 |
|