【问题标题】:AxWMPLib.AxWindowsMediaPlayer autoplay after end of song [duplicate]AxWMPLib.AxWindowsMediaPlayer 歌曲结束后自动播放[重复]
【发布时间】:2014-12-22 09:25:11
【问题描述】:

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

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

这是自动播放部分的代码sn-p:

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

请帮忙。

【问题讨论】:

    标签: c# axwindowsmediaplayer


    【解决方案1】:

    好的,它现在正在工作.. 我应该使用定时器.. 我的代码现在是这样的:

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

    谢谢

    【讨论】:

    • 你的 timer1 var/type 是在哪里删除的?
    • 当然是内置的.designer文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多