1
我有这样一段代码:无法播放完整的声音
MediaPlayer player = new System.Windows.Media.MediaPlayer();
bool playing = false;
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
if (label5.Text == "Waiting 01.wav")
{
MessageBox.Show("No wav loaded");
return;
}
pictureBox6.Image = Form1.Properties.Resources.white_square_button;
try
{
player.Open(new Uri(label37.Text));
player.Volume = (double)trackBar4.Value/100;
playing = true;
player.Play();
}
catch (FileNotFoundException)
{
MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
}
}
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{
pictureBox6.Image = Form1.Properties.Resources.black_square_button;
player.Stop();
player.Close();
playing = false;
}
}
的问题是.wav文件将无法播放完整的只是其中的一小部分。
当键D1被按下直到它被释放时它应该播放完毕。
我在做什么错?
这引发了我一个错误:错误“System.Windows.Forms.KeyEventArgs”不包含“IsRepeat”的定义 – Joscplan
plz帮助我解决这个错误。 – Joscplan
您使用的是什么版本的CLR? e.IsRepeat可以与CLR4.0正常工作,但不能在其他环境中使用。主要的想法是声音播放不久,因为琴键被按下时琴键一再重复。每次开始播放声音。尝试添加一个标志,即:bool _bKeyIsDown = false; protected override void OnKeyDown(KeyEventArgs e) if(_bIsDown)return; _bIsDown = true; //播放声音; base.OnKeyDown(e); } 保护覆盖无效OnKeyUp(KeyEventArgs e) { base.OnKeyUp(e); _bIsDown = false; } – SpeedCoder5