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.


