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";
        }

    }

由于某种原因,音乐停止似乎不起作用。我做错了什么吗?

wplayer.controls.stop(); doesnt work

每次

单击按钮时,您都会创建一个新的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";
    }
}