#c_sharp #winforms
У меня есть Пианино в котором при нажатии на кнопку воспроизводится определенный звук. Как сделать так что бы при нажатии и удержании на клавишу, button1.PerformClick(); срабатывал 1 раз и звук не повторялся. private void Form1_KeyDown(Object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.D1: button1.PerformClick(); button1.BackColor = System.Drawing.Color.Gray; label3.Text = "До / 1"; label5.Text = "1"; break; } }
Ответы
Ответ 1
Храните в классе переменную bool isPressed. В методе Form1_KeyDown устанавливайте её в true, в методе Form1_KeyUp - в false. Проверяйте, не нажата ли сейчас кнопка в методе Form1_KeyDown через if(!isPressed){...}Ответ 2
Можно попробовать отключить автоповтор в настройках клавиатуры. Или решить на программном уровне, выставлять флаг нажатия, и если он выставлен, игнорировать KeyDown нажатой клавиши, пока не произойдёт её KeyUp. Правда, есть опасность, что отпускание будет потеряно - у клавиатур есть ограничение на количество одновременно нажатых клавиш, при превышении которого следующие события игнорируются. Да и по другим причинам событие может потеряться.
Комментариев нет:
Отправить комментарий