В этом приложении мне нужно иметь возможность остановить ответ от нажатия клавиши, чтобы предотвратить попадание ненужных данных в вывод.Проблема, с которой я столкнулся, заключается в том, что использование методов, описанных в моем коде ниже, не позволяет клавишам повторяться, но также не позволяет им реагировать достаточно быстро - пользователи очень быстро нажимают на клавиши.Я не уверен, что это мое оборудование, ограничение API или проблема с моим кодом, но приведенные ниже подпрограммы не просто работают достаточно быстро, чтобы работать без возможности использования программы.Способ определения, активно ли удерживается клавиша (и как долго), также поможет другой функции программы и решит эту текущую проблему.
Есть идеи?
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = isKeyDown;
isKeyDown = true;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
isKeyDown = false;
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!isStreamPlaying) return;
if (e.KeyChar.Equals('d') || e.KeyChar.Equals('j'))
{
//red hit
SoundPlayer hitSounds = new SoundPlayer(taikoLiveMapper.Properties.Resources.normal_hitnormal);
hitSounds.Play();
outputlist.Add(string.Format("320,240,{0},1,{1}", ms, 0));
lastms = ms;
}
else if (e.KeyChar.Equals('s') || e.KeyChar.Equals('k'))
{
//blue hit
SoundPlayer hitSounds = new SoundPlayer(taikoLiveMapper.Properties.Resources.normal_hitclap);
hitSounds.Play();
outputlist.Add(string.Format("320,240,{0},1,{1}", ms, 8));
lastms = ms;
}
}