Código:
bool playing = false; bool _bKeyIsDown = false; protected override void OnKeyDown(KeyEventArgs e) { if (_bKeyIsDown) return; _bKeyIsDown = true; // play sound; base.OnKeyDown(e); } protected override void OnKeyUp(KeyEventArgs e) { base.OnKeyUp(e); _bKeyIsDown = false; } private void Window_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.D1) { if (label5.Text == "Waiting 01.wav") { MessageBox.Show("No beat loaded"); return; } pictureBox6.Image = Form1.Properties.Resources.white_square_button; try { playing = true; player1.Open(new Uri(label37.Text)); player1.Volume = (double)trackBar4.Value / 100; player1.Play(); } catch (FileNotFoundException) { MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!"); } } else if (e.KeyCode == Keys.D2) { if (label19.Text == "Waiting 02.wav") { MessageBox.Show("No beat loaded"); return; } pictureBox7.Image = Form1.Properties.Resources.white_square_button; try { playing = true; player2.Open(new Uri(label38.Text)); player2.Volume = (double)trackBar4.Value / 100; player2.Play(); } catch (FileNotFoundException) { MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!"); } }
Como he dicho la primera vez que presionas la tecla el sonido reproduce normalmente pero si quieres cambiar de tecla o presionas otra a la vez el sonido no reproduce o demora en reproducir.
Me atrevo a decir que el problema está aquí: if (_bKeyIsDown) return;
Pero si quito eso el sonido no reproduce completo.
Por favor si alguien me puede orientar en esto estaré muy agradecido.
Gracias de antemano.