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

本文关键字:结束 自动播放 AxWindowsMediaPlayer AxWMPLib | 更新日期: 2023-09-27 18:34:51

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

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

这是自动播放部分的代码片段:

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;
            }
        }

但是我尝试了一下,然后URL更改了,但没有自动播放。

我的代码有什么问题?

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

请帮忙。

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

好的,

它现在可以工作了。我应该使用计时器。我的代码现在是这样的:

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;
        }
    }
}

谢谢