Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 20.06.2017
Сообщений: 34

Не срабатывает событие при нажатии стрелок на клавиатуре, а при нажатии символьных клавиш срабатывает

20.10.2023, 23:22. Показов 938. Ответов 4

Студворк — интернет-сервис помощи студентам
Привет!

Создаю триггер на событие
C#
1
2
            this.KeyPreview = true;
            this.KeyDown += new System.Windows.Forms.KeyEventHandler(key_Click);
И вызываю это
C#
1
2
3
4
5
6
7
8
9
10
11
private void key_Click(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Right: right_click(); break;
                case Keys.Left: left_click(); break;
                case Keys.A: left_click(); break;
                case Keys.D: right_click(); break;             
                  
            }
        }
И получается, что нажатие на клавиатуре стрелок вправо и влево ни к чему не приводит, а вот аналогичный вызов через клавиши A и D работает. Как так? стрелки не хочу а буквы хочу? объясните, пожалуйста, спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2023, 23:22
Ответы с готовыми решениями:

При повторном нажатии на кнопку не срабатывает событие
добрый день товарищи! такая проблема, при запуске программы, на форме нажимаю кнопку, выходит вторая форма и в richtextbox заноситься...

Не срабатывает событие onclick при нажатии на класс
Добрый вечер. Столкнулся с проблемой, а точнее запутался уже. Есть DOM <li id="menu-item-12" class="menu-item...

Не срабатывает SendKeys при повторном нажатии горячих клавиш
Здравствуйте, не срабатывает SendKeys при повторном нажатии горячих клавиш. Я понимаю, что дело в скорости обработки сообщений WinAPI,...

4
sleep
 Аватар для I can
4926 / 4576 / 840
Регистрация: 13.04.2015
Сообщений: 9,727
21.10.2023, 05:17
Цитата Сообщение от ydmm Посмотреть сообщение
нажатие на клавиатуре стрелок вправо и влево ни к чему не приводит
У меня работает, если форма пустая.

Добавлено через 29 минут
Как костыльное решение:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
   
               private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview = true;
            //this.KeyDown += new System.Windows.Forms.KeyEventHandler(key_Click);
        }
 
 
 
        //private void key_Click(object sender, KeyEventArgs e)
        //{
        //    switch (e.KeyCode)
        //    {
        //        case Keys.Right: right_click(); break;
        //        case Keys.Left: left_click(); break;
        //        case Keys.A: left_click(); break;
        //        case Keys.D: right_click(); break;
 
        //    }
        //}
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
                case Keys.Right: right_click(); break;
                case Keys.Left: left_click(); break;
                case Keys.A: left_click(); break;
                case Keys.D: right_click(); break;
            }
            return base.ProcessCmdKey(ref msg, keyData);
           
        }
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
21.10.2023, 05:31
Вот что говорится в доках:
Некоторые нажатия клавиш, такие как клавиши TAB, RETURN, ESC и стрелки, обычно игнорируются некоторыми элементами управления, так как они не считаются нажатиями клавиш ввода. Например, по умолчанию Button элемент управления игнорирует клавиши со стрелками. Нажатие клавиш со стрелками обычно приводит к переходу фокуса к предыдущему или следующему элементу управления. Клавиши со стрелками считаются клавишами навигации, и их нажатие обычно не вызывает KeyDown событие для Button. Однако нажатие клавиш со стрелками для вызывает ButtonPreviewKeyDown событие . Обрабатывая PreviewKeyDown событие для Button и устанавливая для IsInputKey свойства trueзначение , можно вызывать KeyDown событие при нажатии клавиш со стрелками. Однако при обработке клавиш со стрелками фокус больше не будет перемещаться к предыдущему или следующему элементу управления.
Т.е. чтобы в событии KeyDown работали курсорные клавиши, добавьте обработчик:
C#
1
2
3
4
5
6
7
8
9
10
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}
0
1 / 1 / 0
Регистрация: 20.06.2017
Сообщений: 34
21.10.2023, 09:22  [ТС]
отлично, теперь ошибка

Ошибка CS1503 Аргумент 1: не удается преобразовать из "группа методов" в "Keys".

C#
1
2
3
4
5
6
7
8
9
10
this.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventArgs(key_key);
 
 private void key_key(object sender, PreviewKeyDownEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Right: right_click(); break;
                case Keys.Left: left_click(); break;                
            }
        }
0
 Аватар для XIST
1960 / 1070 / 148
Регистрация: 01.10.2009
Сообщений: 3,590
Записей в блоге: 1
21.10.2023, 20:50
Лучший ответ Сообщение было отмечено ydmm как решение

Решение

ydmm,
C#
1
2
this.KeyPreview = true;
this.KeyUp += Key_key;
C#
1
2
3
4
5
6
7
8
9
private void Key_key(object? sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Right: this.Text = "Right"; break;
                case Keys.A: this.Text = "A"; break;
                case Keys.B: this.Text = "B"; break;
            }
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2023, 20:50
Помогаю со студенческими работами здесь

Какое событие срабатывает в Awesomium при нажатии на ссылку?
Здравствуйте, делаю браузер нужна помощь знающих. Использую awesonium webcontrol. Когда в поисковике нажимаешь на ссылки которые он тебе...

Как сделать плавную смену картинок при нажатии клавиш "стрелок" на клавиатуре
В примере указанном по ссылке: http://www.litecode.ru/javascript/xfade.shtml картинки сменяются сами с задержкой. Вызов функции может...

Как сделать плавную смену картинок при нажатии клавиш "стрелок" на клавиатуре
В примере указанном по ссылке: http://www.litecode.ru/javascript/xfade.shtml картинки сменяются сами с задержкой. Вызов функции может...

DBGrid. Какое событие срабатывает при повторном нажатии на ячейку грида
Привет всем! Возник вопрос по работе с DBGrid'ом: Не могу понять, какое событие срабатывает при повторном нажатии на ячейку грида,...

Движение Image при нажатии стрелок на клавиатуре
Здравствуйте. Помогите пожалуйста. У меня есть Image1 я хочу что бы при нажатии стрелок на клавиатуре он двигался. Если стрелка нажата...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru