0

我又一次陷入了我的练习中。我希望在打开程序时播放 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;
        }
    }

在打开程序时,该方法以 case 0 调用。音乐播放。都好。然而这不起作用,我不明白为什么,因为它是非常简单的代码。

        public void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked == true)
        {
            PlayPause(2);
        }
        else if (checkBox1.Checked == false)
        {
            PlayPause(1);
        }
    }

关于为什么选中复选框不会暂停/取消暂停音乐的任何想法?

4

2 回答 2

6

每次调用 PlayPause 函数时,都会实例化一个全新的 WindowsMediaPlayer 对象。

因此,当您稍后调用 pause 时,您什么也没有暂停。

您需要保留或传递对该 WMP 对象的引用,以便您在同一个对象上进行操作。

于 2012-06-22T22:37:06.257 回答
1

嗯,这是因为您每次调用 PlayPause 时都在创建一个新的媒体播放器。在构造函数中创建它应该没问题。

于 2012-06-22T22:37:32.600 回答