for (int i = 0; i < fi.Length; i++)
            {
                fi[i].Extension.ToLower();
                if (fi[i].Extension.ToLower() == ".xml"||fi[i].Extension.ToLower()==".db")
                {
                    goto a;
                }
                WMPLib.IWMPPlaylist currentList = this.axWindowsMediaPlayer1.currentPlaylist;
                WMPLib.IWMPMedia Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);
                currentList.appendItem(Media);            
                           
            a: ;
            }
             axWindowsMediaPlayer1.Ctlcontrols.play();  
现在的问题是我把文件加进去以后,它不是按加进去的顺序播放,怎么设置让axWindowsMediaPlayer按加进去的顺序播放?

解决方案 »

  1.   

    private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
            {
              //  WMPLib.WMPPlayState newState = (WMPLib.WMPPlayState)e.newState;
             
                        axWindowsMediaPlayer1.Ctlcontrols.play();
                        axWindowsMediaPlayer1.fullScreen = true;           
               
            }
      

  2.   

    还有就是,用goto的地方能不能用别的方式实现呢,用这个好象不够传专业,在实际的代码中很少看到过用goto的
      

  3.   

    搂主这程序编得问题不少,简单优化一下就是:WMPLib.IWMPPlaylist currentList = this.axWindowsMediaPlayer1.currentPlaylist;
    WMPLib.IWMPMedia Media;for (int i = 0; i < fi.Length; i++)
    {
    fi[i].Extension.ToLower();
    if (fi[i].Extension.ToLower() != ".xml" && fi[i].Extension.ToLower() != ".db")
    {
    Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);
    currentList.appendItem(Media);
    }
    }axWindowsMediaPlayer1.Ctlcontrols.play();
      

  4.   

    appendItem应当就是加到最后,如果实在不行的话,可以用insert来指定加入的位置
      

  5.   

    private void VnvPlayerStart()
    {
     WMPLib.IWMPPlaylist currentList = this.axWindowsMediaPlayer1.currentPlaylist;
                for (int i = 0; i < fi.Length; i++)
                {
                    fi[i].Extension.ToLower();
                    if (fi[i].Extension.ToLower() != ".xml"&&fi[i].Extension.ToLower()!=".db")
                    {                 
                    
                    WMPLib.IWMPMedia Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);
                    currentList.appendItem(Media);            
                    }           
                
                }
                 axWindowsMediaPlayer1.Ctlcontrols.play();                 
    }
       private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
            {                   
                        axWindowsMediaPlayer1.Ctlcontrols.play();                            
                        axWindowsMediaPlayer1.fullScreen = true; 
            }      
        现在是这样写的,因为要加载文件 VnvPlayerStart()方法每30秒执行一次,  现在就是不按顺序播放 好象是随机播放
      

  6.   

    那你肯定是第一遍播放完了,才开始列表更新的。你对更新那一部分跟踪一下吧。另外,你对PlayState完全不做判断,以后也可能会出问题。想停都停不了。
      

  7.   

    另外你的程序WMPLib.IWMPMedia Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);不要全放在循环里面,这样你等于每次循环,都重新声明Media变量。最好按照我给你的那个修改后的来做。
      

  8.   

    欢迎各界.Net初学&高手们加入Q群12757054(要经常在线)
    希望大家的问题能够及时的得到解决.
      

  9.   

    to 
    ——————————————
    另外你的程序WMPLib.IWMPMedia Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);不要全放在循环里面,这样你等于每次循环,都重新声明Media变量。最好按照我给你的那个修改后的来做。不放到循环里怎么遍历文件里的文件把它们加到currentList里面去?
      

  10.   

    currentList.count应该是这个列表一共有多少个文件吧?,我跟踪了一下,比如第一次加进去4个文件,现在我又加了一个文件,程序是遍历文件夹所以程序又加进去5个文件,currentList.count原来是4,加了一个文件,现在是9了,刚开始的四个文件放两次的原因,我这样解释你能否理解,这个问题怎么解决???
      

  11.   

    第一个问题:先声名变量
    WMPLib.IWMPMedia Media;循环的时候
    Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);第二个问题:
    先判断文件是否已经在当前列表里面了,如果不在,再添加(遍历当前的playList,获取每个Media的Url,也可能是BaseUrl,如果这种方式你实现起来有困难的话,也可以自己定义一个数组来记录,但要记得更新之后,也要更新该数组),另外你每次更新,没有log么?遍历文件夹方式不可靠。每次更新完毕之后,应当有一个更新列表,靠这个列表来添加才准确。
      

  12.   

    如何遍历当前的playList,获取每个Media的Url,也可能是BaseUrl???
      

  13.   

    我现在是直接把文件加到currentList里了,axWindowsMediaPlayer1好象是生成一个播放列表1,如何可以遍历这个列表,fi[i]就可以和这个列表做对比,没有再加进去,这样问题就解决了,如果可以麻烦在
    private void VnvPlayerStart()
    {
     WMPLib.IWMPPlaylist currentList = this.axWindowsMediaPlayer1.currentPlaylist;
                for (int i = 0; i < fi.Length; i++)
                {
                    fi[i].Extension.ToLower();
                    if (fi[i].Extension.ToLower() != ".xml"&&fi[i].Extension.ToLower()!=".db")
                    {                 
                    
                    WMPLib.IWMPMedia Media = axWindowsMediaPlayer1.newMedia(downaddress+ @"\" + fi[i]);
                    currentList.appendItem(Media);            
                    }           
                
                }
                 axWindowsMediaPlayer1.Ctlcontrols.play();                 
    }
       private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
            {                   
                        axWindowsMediaPlayer1.Ctlcontrols.play();                            
                        axWindowsMediaPlayer1.fullScreen = true; 
            }      
    中帮忙改一下,谢谢~~~
      

  14.   

    for (int i = 0; i < currentList.count; i++)
    {
    MessageBox.Show(currentList.get_Item(i).sourceURL);
    }用这个方法可以得到CurrentList列表中,Media对应的文件,但不是很准确(是否准确跟媒体文件有关),所以最好自己做个数组来保存。