Аватар для SkyDen
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 26

При одном нажатии клавиши, метод выполняется 2 раза

05.12.2017, 09:37. Показов 2173. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Необходимо отследить нажатие клавиши на клавиатуре и в зависимости от неё, выполнить определенный код. Решил сделать так:
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
33
34
35
36
37
38
39
40
public CGForm5()
        
{
      InitializeComponent();
       this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.down_key);
 
}
 
 public void down_key(object sender, KeyEventArgs Key)
        {
            switch (Key.KeyData)
            {
                case Keys.Up:                 
                    D--;                 
                    matrix_mul( R, O, F);
                    vid();
                    write_object();
                    break;
                case Keys.Down:
                    D++;
                    matrix_mul( R, O, F);
                    vid();
                    write_object();
                    break;
                case Keys.Left:
                    F++;
                    matrix_mul( R, O, F);
                    vid();
                    write_object();
                    break;
                case Keys.Right:
                    O++;
                    matrix_mul( R, O, F);
                    vid();
                    write_object();
                    break;
            }
 
 
        }
Вроде всё работает, но почему то, если нажать на любую из этих клавиш на клавиатуре, метод down_key выполняется 2 раза, а не один, что и требуется. Подскажите пожалуйста, как исправить подобную проблему?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2017, 09:37
Ответы с готовыми решениями:

Почему при нажатии клавиши Enter alert срабатывает 3 раза?
В любом случае: $(document).keypress(function (e) { if (e.which == 13) { alert('enter key is pressed'); } }); ...

При переключении радиокнопок метод выполняется два раза
Здравствуйте, суть темы: есть две радиокнопки, при переключении с одной на другую, метод, обрабатывающий переключение, выполняется два...

При нажатии клавиши I проверить и вывести на экран состояние клавиши Insert
Добрый день, помогите с заданием при нажатии клавиши I проверить и вывести на экран состояние клавиши Insert очень далек от...

6
 Аватар для worldown
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
05.12.2017, 10:25
Цитата Сообщение от SkyDen Посмотреть сообщение
если нажать на любую из этих клавиш на клавиатуре, метод down_key выполняется 2 раза
100% уверены что метод down_key два раза вызывается? точку останова ставили ?
1
 Аватар для SkyDen
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 26
05.12.2017, 10:48  [ТС]
Цитата Сообщение от worldown Посмотреть сообщение
100% уверены что метод down_key два раза вызывается? точку останова ставили ?
Да, делал отладку с точкой остановки в начале метода. При нажатии он выполняет последовательность функций для нажатой клавиши, доходит до break и начинает метод еще раз, проходит его и теперь уже точно останавливается. Если нажать клавишу еще раз то он опять два раза выполнит. Я даж прописал, чтобы выводилось на экран число нажатий (сколько раз он этот метод выполнил). В итоге если 1 раз нажать на клавишу, то выводиться: "Число нажатий - 2"...Уже сутки с этим мучаюсь...
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
05.12.2017, 11:42
выложите код из blablabla.Designer.cs
1
Заблокирован
05.12.2017, 11:43
SkyDen, попробуйте поиск [Ctrl+F] по всему проекту слова down_key.
Или приложите весь проект, воспроизвести подобный эффект не удалось - что то делаю не так...
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
05.12.2017, 12:26
Лучший ответ Сообщение было отмечено SkyDen как решение

Решение

Цитата Сообщение от SkyDen Посмотреть сообщение
C#
1
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.down_key);
Теперь откройте форму в дизайнере и посмотрите, привязан ли там обработчик на событие KeyUp.
Если привязан, то в конструкторе вы привязываетесь второй раз. Два обработчика — два вызова.
Удалите привязку из дизайнера или из конструктора.
1
 Аватар для SkyDen
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 26
05.12.2017, 19:00  [ТС]
Большое спасибо всем кто откликнулся, проблема действительно была из за лишней строчки, обработки события KeyUp в Designer.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2017, 19:00
Помогаю со студенческими работами здесь

При нажатии клавиши в английской раскладке, выводить русское значение клавиши
Требуется чтобы при нажатии клавиши в английской раскладке, выводилось Русское значение клавиши. Например q это й. По возможности с учетом...

При нажатии клавиши «I» проверить и вывести состояние клавиши insert
Написать программу : при нажатии клавиши «I» проверить и вывести состояние клавиши insert Добавлено через 7 минут при нажатии...

Включать курсор при нажатии левой клавиши, а выключать по нажатию правой клавиши мыши
Нужно: Включать курсор при нажатии левой клавиши, а выключать по нажатию правой клавиши мыши. Почему не работает? И что сделать, чтобы...

Составить программу,которая при нажатии,клавиши "д" рисует солнце,при нажатии клавиши "н" рисует луну
Помогите пожалуйста сделать

Как сделать при нажатии на context menu script, выполняется код timer.Start(); и при повторном нажатии выполняет код?
как сделать при нажатии на context menu script , выполняется код timer.Start(); и при повторном нажатии выполняет код timer.Stop();


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru