如何使用axmediaplayer播放播放列表中的下一个项目?

时间:2012-02-03 14:58:59

标签: c# axwindowsmediaplayer

好的我有疑问,我根据列表框中列出的项目制作了这个代码来播放axmediaplayer。 首先,我使用opendialog制作一个列表:

 private string[] files, path;
 private void button1_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            files = openFileDialog1.SafeFileNames;
            path = openFileDialog1.FileNames;
            for (int i = 0; i < files.Length; i++) {
                listBox1.Items.Add(files[i]);
            }
        }
    }

然后当使用此代码更改列表框索引时(当列表框中的项目为cliked时)播放音乐:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    axWindowsMediaPlayer1.URL = path[listBox1.SelectedIndex];
}

它工作正常,然后我希望播放器自动移动到列表框上项目的下一首歌曲。使用事件PlayStateChange,所以我做了这个代码

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded) 
    {
         if(listBox1.SelectedIndex < files.Length - 1)
         {
            listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
         }
    }
}

所选索引更改,但播放器不会自动播放下一首歌曲。我必须手动点击播放按钮才能播放列表。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

好吧我找到了,解决方法是在播放下一首歌之前添加计时器。 首先我添加计时器,那应该是timer1。然后我将playstate事件改为这样的事情:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
        {
            timer1.Interval = 100;
            timer1.Enabled = true;               
        }            
     }

然后在定时器上添加tick事件,tick事件是这样的:

 private void timer1_Tick(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex < files.Length - 1)
        {
            listBox1.SelectedIndex++;
            timer1.Enabled = false;
        }
        else
        {
            listBox1.SelectedIndex = 0;
            timer1.Enabled = false;
        }            
    }       

现在它的工作很好^^

答案 1 :(得分:0)

以下功能对我有用

List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch"));
boolean disabled = elms.get(i).getAttribute("class").contains("disabledSwatch");