Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/145: Рейтинг темы: голосов - 145, средняя оценка - 4.97
Заблокирован

Событие на нажатие определённой клавиши

26.02.2012, 17:58. Показов 30722. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например нужно чтобы при нажатии Shift открывалось сообщение, интересовался в msdn с событием KeyPress, но не совсем понятно.
У меня такой код на событие KeyPress кнопки button, но компиляция выдаёт ошибку:
C#
1
if (e.KeyChar == Keys.S) MessageBox.Show("S");
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2012, 17:58
Ответы с готовыми решениями:

Как в консольном приложении отловить нажатие определённой клавиши?
Как в консольном приложении отловить нажатие определённой клавиши?

Как вызвать Form1_KeyDown и передать нажатие определенной клавиши?
нужно в коде вызывать Form1_KeyDown и передавать на него нажатие клавиши.

Событие на однократное нажатие клавиши клавиатуры
Добрый день, у меня вопрос, как сделать так, чтобы клавиша W реагировала лишь на однократное её нажатие (то есть чтобы метод game.Shot()...

14
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
26.02.2012, 18:07
В обработчике события KeyPress для элемента интерфейса

C#
1
2
3
4
5
... (object sender, KeyEventArgs e)
{
  if (e.KeyCode.ToString() == // клавиша
     ...
}
Для Shift
C#
1
2
3
4
5
... (object sender, KeyEventArgs e)
{
  if (e.Shift)
     ...
}
Для Control, Alt, Shift есть ещё свойство Modifiers
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
26.02.2012, 18:11
C#
1
2
3
if (Keys.ShiftKey == e.KeyCode) {
                MessageBox.Show(e.KeyCode.ToString());
            }
0
Заблокирован
26.02.2012, 18:16  [ТС]
Цитата Сообщение от MDmitry_ Посмотреть сообщение
В обработчике события KeyPress для элемента интерфейса

C#
1
2
3
4
5
... (object sender, KeyEventArgs e)
{
  if (e.KeyCode.ToString() == // клавиша
     ...
}
У меня в C# нет фразы e.KeyCode, но есть фраза e.KeyChar:
C#
1
if (e.KeyChar.ToString() == Keys.Shift) MessageBox.Show("Shift");
Но компиляция вдаёт ошибку.

Добавлено через 1 минуту
Цитата Сообщение от Renton Посмотреть сообщение
C#
1
2
3
if (Keys.ShiftKey == e.KeyCode) {
                MessageBox.Show(e.KeyCode.ToString());
            }
Не сработало:
C#
1
if (Keys.A == e.KeyChar.ToString()) MessageBox.Show("A");
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
26.02.2012, 18:22
В событии KeyDown есть e.KeyCode - поглядите там.
2
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
26.02.2012, 18:29
Если интересует именно событие KeyPress, то можно так:
C#
1
2
3
if (e.KeyChar.ToString().ToUpper() == Keys.A.ToString()) {
                MessageBox.Show(e.KeyChar.ToString());
            }
P.S. Кстати, KeyPress вызывается только нажатием клавиш с символами. Остальные клавиши вызывают события KeyDown и KeyUp.
0
Заблокирован
26.02.2012, 18:35  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
В событии KeyDown есть e.KeyCode - поглядите там.
Но MDmitry_ сказал что оно есть в KeyPress, шась увидел в KeyDown есть.

Добавлено через 4 минуты
Нажимаю 'A', но ничего не происходит(

C#
1
2
3
4
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar.ToString() == Keys.A.ToString()) MessageBox.Show("A");
        }
C#
1
2
3
4
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == Keys.A.ToString()) MessageBox.Show("A");
        }
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
26.02.2012, 18:41
Keys.A - это заглавная А (равносильно нажатию Shift + A).
Смотри мое сообщение выше.
1
Заблокирован
26.02.2012, 18:49  [ТС]
Renton спасибо, а откуда узнать мне код кнопки-стрелки и вабше других кнопок, на msdn есть такой список имён?

Добавлено через 1 минуту
Keys.A только заглавная, а мне нужна строчная, что тогда?
0
42 / 42 / 6
Регистрация: 13.06.2011
Сообщений: 55
26.02.2012, 20:24
Цитата Сообщение от Доктор Гордон Посмотреть сообщение
Renton спасибо, а откуда узнать мне код кнопки-стрелки и вабше других кнопок, на msdn есть такой список имён?
Cмотри перечисление Keys
Цитата Сообщение от Доктор Гордон Посмотреть сообщение
Keys.A только заглавная, а мне нужна строчная, что тогда?
C#
1
2
3
if (e.KeyChar.ToString().ToUpper() == Keys.A.ToString()) {
                MessageBox.Show(e.KeyChar.ToString());
            }
Данный код будет работать как с заглавной, так и со сторочной 'a' (поскольку символ нажатой клавиши всегда переводится в верхний регистр (метод ToUpper) и сравнивается с заглавной 'A').
Если убрать ToUpper, то код будет выполняться только по нажатию Shift + A (ну или по нажатию A при включенном CapsLock).
2
Заблокирован
26.02.2012, 20:41  [ТС]
Цитата Сообщение от Renton Посмотреть сообщение
C#
1
2
3
if (e.KeyChar.ToString().ToUpper() == Keys.A.ToString()) {
                MessageBox.Show(e.KeyChar.ToString());
            }
Я сделал код для строчной 'a', но не сработало:
C#
1
if (e.KeyCode.ToString() == Keys.A.ToString().ToLower())
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
26.02.2012, 20:46
Может так:
C#
1
if (e.KeyChar.ToString() == Keys.A.ToString().ToLower())
0
 Аватар для coderxx
469 / 183 / 16
Регистрация: 25.02.2012
Сообщений: 418
Записей в блоге: 2
26.02.2012, 20:48
Нужно так:
C#
1
if (e.KeyCode == Keys.A)
3
Заблокирован
26.02.2012, 20:51  [ТС]
Цитата Сообщение от coderxx Посмотреть сообщение
Нужно так:
C#
1
if (e.KeyCode == Keys.A)
И вправду сработало, молодец спасибо!
0
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
27.02.2012, 17:25
Цитата Сообщение от Доктор Гордон Посмотреть сообщение
Но MDmitry_ сказал что оно есть в KeyPress, шась увидел в KeyDown есть
А ну да, недоглядел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2012, 17:25
Помогаю со студенческими работами здесь

Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши
Народ. не могу найти, как в студии присваивать горячие клавиши к примеру на выполнение нажатие клавиши? или на пункты меню.. Добавлено...

Нажатие определенной клавиши на клавиатуре = Запуск определенной функции
Здравствуйте. У меня такой вопрос: как при нажатии, к примеру, клавиши "1" на клавиатуре запустить нужную мне функцию (Окно с меню...

Отслеживать нажатие определенной клавиши
Надеюсь, не ошибся разделом. Мне нужно отследить нажатие определенной клавиши(а именно CAPS Lock). Погуглив, я нашел только, как...

Событие нажатие клавиши
Начинаю изучать язык java, появились некоторые трудности, не знал, как их правильно сформулировать, поэтому решил создать новую тему. ...

Событие на нажатие клавиши клавиатуры
для Label1 нажимаю клавишу с клавиатуры например a . И должен получить событие например Label1->Color=clRed; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru