wplayer.controls.stop(); doesnt work
本文关键字:doesnt work controls stop wplayer | 更新日期: 2023-09-27 18:36:16
我在开始时将一个名为playercount的int设置为1,并执行以下操作。
private void button2_Click(object sender, EventArgs e)
{
playercount++;
WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "Super Mario Bros.mp3";
if (playercount % 2 == 0)
{
button2.Text = "Music Toggle: ON";
wplayer.controls.play();
}
else
{
wplayer.controls.stop();
button2.Text = "Music Toggle: OFF";
}
}
由于某种原因,音乐停止似乎不起作用。我做错了什么吗?
每次
单击按钮时,您都会创建一个新的WindowsMediaPlayer
实例。这意味着您的stop()
调用不会影响您在第一次单击时创建的播放器,该播放器play()
。
您需要将播放器创建为类级变量并对其执行操作。
正如InvernoMuto指出的那样,你playercount
逻辑也有点可疑。一个简单的bool
还不够吗?
private bool musicPlaying = false;
private WMPLib.WindowsMediaPlayer wplayer = null;
private void button2_Click(object sender, EventArgs e)
{
// create player only if necessary
if(wplayer == null)
{
wplayer = new WMPLib.WindowsMediaPlayer();
wplayer.URL = "Super Mario Bros.mp3";
}
// toggle musicPlaying
musicPlaying = !musicPlaying;
if (musicPlaying)
{
button2.Text = "Music Toggle: ON";
wplayer.controls.play();
}
else
{
wplayer.controls.stop();
button2.Text = "Music Toggle: OFF";
}
}