如何在c#中关联音乐播放器中的多个文件

时间:2017-08-03 06:35:39

标签: c# associations audio-player

我最近在c #WindowsFormsApplications中开发了一个音乐播放器。

只有当您选择默认程序时,一切都很顺利,它可以完美地打开一个音乐文件,但是当您选择5个音乐文件时。 5音乐播放器打开。

如果将其设置为默认设置(如c#中的播放列表),如何解决此问题以打开多个文件? 我没有尝试任何事情或任何代码来做到这一点。 请帮忙!

这是我的Program.cs

  static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {


        //with args(user open file with the program)
        if (args != null && args.Length > 0)
        {

            string fileName = args[0];
            //Check file exists
            if (File.Exists(fileName))
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 MainFrom = new Form1();
                MainFrom.OpenFile(fileName);
                Application.Run(MainFrom);
            }
            //The file does not exist
            else
            {
                MessageBox.Show("The file does not exist!", "BMPlayer Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
        //without args
        else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

这是Form1.cs打开文件

public void OpenFile(string filePath)
    {
        string file1 = File.ReadAllText(filePath);
        axWindowsMediaPlayer1.URL = filePath;
    }

1 个答案:

答案 0 :(得分:1)

最好的方法是创建新的文件类型(播放列表)并在应用程序中作为参数接收,然后您可以在应用程序中管理此文件,添加/删除此播放列表中的歌曲。 一种很好的方法,它以JSon格式存储内容。然后,您可以使用Nuget包轻松管理内容,例如:NewtonSoft。

我创建了一个简单的代码示例,然后您可以使用json和Music Object创建和管理播放列表。

   private void btnLoad_Click(object sender, EventArgs e)
    {
        string line;

        using (StreamReader reader = new StreamReader(@"c:\temp\music\playlist.mpl"))
        {
            line = reader.ReadLine();
        }

        var jobj = JsonConvert.DeserializeObject<List<Music>>(line);
    }

    private void btnCreate_Click(object sender, EventArgs e)
    {
        var musiclist = new List<Music>();

        var objSongs = System.IO.Directory.GetFiles(@"C:\temp\music\");

        foreach (var song in objSongs)
        {
            musiclist.Add(new Music { Name = song });
        }

        var ret = Newtonsoft.Json.JsonConvert.SerializeObject(musiclist);

        using (var sw = new StreamWriter(@"c:\temp\music\playlist.mpl"))
        {
            sw.Write(ret);
            sw.Flush();
        }
    }

public class Music
{
    public string Name { get; set; }
}