我的练习再次陷入困境。 当我打开我的程序时,我想要一个MP3文件播放 - 我能做到这一点,我得到了音乐。 我还想要一个允许暂停音乐的复选框 - 但要么我很累,要么事情不起作用 - 当我检查/取消选中时没有任何反应。我这样做了:
public void PlayPause(int Status)
{
WMPLib.WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
switch (Status)
{
case 0:
wmp.URL = "Musik.mp3";
break;
case 1:
wmp.controls.play();
break;
case 2:
wmp.controls.pause();
break;
}
}
打开程序后,将使用案例0调用该方法。播放音乐。都好。 然而,这不起作用,我不明白为什么,因为这是非常简单的代码。
public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
PlayPause(2);
}
else if (checkBox1.Checked == false)
{
PlayPause(1);
}
}
为什么选中复选框不会暂停/取消暂停音乐?
答案 0 :(得分:6)
每次调用PlayPause函数时,都会实例化一个全新的WindowsMediaPlayer对象。
因此,当您稍后暂停时,您暂停任何事情。
您需要保持或传递对该WMP对象的引用,以便您在同一个对象上运行。
答案 1 :(得分:1)
嗯,这是因为每次调用PlayPause时都会创建一个新的媒体播放器。在构造函数中创建它应该没问题。