C# 如何使用axmediaplayer播放播放列表中的下一项?

C# 如何使用axmediaplayer播放播放列表中的下一项?,c#,axwindowsmediaplayer,C#,Axwindowsmediaplayer,好的,我有一个问题,我做了这个代码来根据列表框中列出的项目来播放axmediaplayer。 首先,我使用opendialog生成一个列表: private string[] files, path; private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)

好的,我有一个问题,我做了这个代码来根据列表框中列出的项目来播放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]);
            }
        }
    }
它工作正常,然后我希望播放器根据我列表框中的项目自动移动到下一首歌曲。通过使用events 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;
         }
    }
}
private void axWindowsMediaPlayer1\u PlayStateChange(对象发送方,AxWMPLib.\u WMPOCXEvents\u PlayStateChangeEvent e)
{
如果(axWindowsMediaPlayer1.playState==WMPLib.WMPPlayState.wmppsMediaEnded)
{
if(listBox1.SelectedIndex

选定的索引会更改,但播放机不会自动播放下一首歌曲。我必须手动单击播放按钮才能播放列表。有人能帮我起床吗?

好的,我找到了,解决办法是在播放下一首歌之前添加计时器。 首先我添加定时器,应该是timer1。然后我将playstate事件更改为如下内容:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
        {
            timer1.Interval = 100;
            timer1.Enabled = true;               
        }            
     }
 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;
        }            
    }       
然后在计时器i上添加勾号事件,勾号事件如下所示:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, axWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
        {
            timer1.Interval = 100;
            timer1.Enabled = true;               
        }            
     }
 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;
        }            
    }       
private void timer1\u勾选(对象发送方,事件参数e)
{
if(listBox1.SelectedIndex

现在它的工作很好^ ^

下面的功能对我很有用

    private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if ((WMPLib.WMPPlayState)e.newState == WMPLib.WMPPlayState.wmppsMediaEnded)
        {

            timer1.Interval = 100;
            timer1.Start();
            timer1.Enabled = true;   
            timer1.Tick += timer1_Tick;
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        /// method to play video list items
        myFuntiontoPlayVideo();
        timer1.Enabled = false;
    }     

列表框中的何处是您正在选择的项目。。?您必须从多少个URL中选择。。如果单击列表中的最后一个URL会发生什么情况。。你有错误吗。。?如果您正在检查e.newState,是否还可以获取e.SelectedItem,它的索引列表框1.SelectedIndex=e.SelectedIndex@Scott-thx对于您的应用程序,我使用opendialog获取listbox项,然后将结果转换为数组路径(也许我还必须编写如何获取listbox?)。是的,当最后一张名单被选中时,它崩溃了,我知道这是因为当你点击最后一张名单+1时,你没有什么可玩的。我不知道你最后一个问题的意思是什么,只需修复最后一个代码,现在列表命中最后一项时不会崩溃。我发现,当我检查if语句时,我使用mbox检查语句是否触发(我将mbox放在listBox1.SelectedIndex=listBox1.SelectedIndex+1;下),因此如果语句触发,我的mbox将弹出。当这首歌结束时,它会弹出,然后发生了一些事情,下一首歌按照我的意愿播放,但当我关闭mbox时,它又停止了。奇怪-你确定没有任何其他事件会触发某些东西吗。。此外,您的媒体代码中是否有MediaPlayer的任何设置,这些设置可用于诸如随机播放、随机播放、预览或确定是否有其他事件暂停媒体播放器的设置??