歌曲结束后,AxWMPLib.AxWindowsMediaPlayer自动播放

时间:2014-12-22 09:25:11

标签: c# axwindowsmediaplayer

我尝试制作简单的音频播放器, 然后我试试吧。 歌曲结束后,播放器停止了。

我想自动设置它并在播放列表中选择随机化。 我使用URL和ListBox作为播放列表..

这是autoplay部分的代码段:

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            if (e.newState == 8)
            {
                Random rnd = new Random();
                int nowPlayIndex = rnd.Next(listURLPlayers.Count);
                axWindowsMediaPlayer1.URL = listURLPlayers[nowPlayIndex];
                axWindowsMediaPlayer1.Ctlenabled = true;
                axWindowsMediaPlayer1.Ctlcontrols.play();
                listAudio.SelectedIndex = nowPlayIndex;
            }
        }

但我尝试了,然后更改了网址,但没有自动播放。

我的代码出了什么问题?

https://github.com/mudzakkir/MP3Player.git

请帮忙。

1 个答案:

答案 0 :(得分:0)

好的,现在正在工作.. 我应该用Timer .. 我的代码现在是这样的:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Mp3Player
{
    public partial class MediaPlayer : Form
    {
        string HomeDir;
        string[] sPlaylists, sURLs;
        List<string> listURLPlayers = new List<string>();
        public MediaPlayer()
        {
            InitializeComponent();
            HomeDir = Directory.GetCurrentDirectory();
            string[] playlist = File.ReadAllLines("playlist.txt");
            foreach (string fileText in playlist)
            {
                listAudio.Items.Add(fileText);
            }
            string[] playlistUrl = File.ReadAllLines("playlistURL.txt");
            foreach (string fileText in playlistUrl)
            {
                listURLPlayers.Add(fileText);
            }
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                sPlaylists = openFileDialog1.SafeFileNames;
                sURLs = openFileDialog1.FileNames;
                for (int i = 0; i < sPlaylists.Length; i++)
                {
                    listAudio.Items.Add(sPlaylists[i]);
                }
                for (int i = 0; i < sURLs.Length; i++)
                {
                    listURLPlayers.Add(sURLs[i]);
                }
                System.IO.StreamWriter SaveFile = new System.IO.StreamWriter("playlist.txt");
                foreach (var item in listAudio.Items)
                {
                    SaveFile.WriteLine(item);
                }
                SaveFile.Close();
                SaveFile = new System.IO.StreamWriter("playlistURL.txt");
                foreach (var item in listURLPlayers)
                {
                    SaveFile.WriteLine(item);
                }
                SaveFile.Close();
            }
        }

        private void listAudio_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            axWindowsMediaPlayer1.URL = listURLPlayers[listAudio.SelectedIndex];
        }

        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            if (e.newState == 8)
            {
                timer1.Enabled = true;
            }
        }

        private void listAudio_SelectedIndexChanged(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.URL = listURLPlayers[listAudio.SelectedIndex];
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            Random rnd = new Random();
            int nowPlayIndex = rnd.Next(listURLPlayers.Count);
            axWindowsMediaPlayer1.URL = listURLPlayers[nowPlayIndex];
            listAudio.SelectedIndex = nowPlayIndex;
        }
    }
}

谢谢