C# 如何找到WMP url的组合文件名和文件路径?

C# 如何找到WMP url的组合文件名和文件路径?,c#,winforms,file,audio,wmp,C#,Winforms,File,Audio,Wmp,我在做一个音乐播放器。它有两种形式;第一个是典型的播放/停止/暂停界面。第二个表单有一个选中列表框来选择您的歌曲。一旦我点击第二个表单中的一个按钮,它就会填充一个文本文件,每一行都列出了我想要播放的每个mp3的名称。 所有的MP3都在同一个文件夹中。 如何将每一行分别与文件路径相结合 例如: 歌曲名称:疯狂 文件路径:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS 结果:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS\Crazy.mp3

我在做一个音乐播放器。它有两种形式;第一个是典型的播放/停止/暂停界面。第二个表单有一个选中列表框来选择您的歌曲。一旦我点击第二个表单中的一个按钮,它就会填充一个文本文件,每一行都列出了我想要播放的每个mp3的名称。 所有的MP3都在同一个文件夹中。 如何将每一行分别与文件路径相结合

例如:

歌曲名称:疯狂

文件路径:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS

结果:C:\Users\Me\Desktop\JAM\u MACHINE\JAMS\Crazy.mp3

这就是我所做的:

string contents = File.ReadAllText(@"C:\Users\Me\Desktop\JAM_MACHINE\record.txt");
        var fullPath = Path.GetFullPath(contents + ".mp3");

        wplayer.URL = fullPath;
当我按下应该开始播放歌曲的按钮时,什么也没有发生

我尝试将第三行中的
fullPath
替换为固定路径,即

wplayer.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\JAMS\Crazy.mp3");
然后按下按钮播放,它就工作了。所以问题不在于播放按钮的编码

此外,当我按下按钮时,当我尝试第二个代码时,应该有一个按钮按下的声音。但是,当我尝试第一个代码时,没有声音

请帮我理解。以下是完整的代码供您参考:

`public PLAYER()
    {
        InitializeComponent();
    }

    WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
    WMPLib.WindowsMediaPlayer playSFX = new WMPLib.WindowsMediaPlayer();
    WMPLib.WindowsMediaPlayer pauseSFX = new WMPLib.WindowsMediaPlayer(); //initialise all the sounds
    DataRecord songRecord = new DataRecord();


    private void PLAYER_Load(object sender, EventArgs e)//the event is actually PLAYER_Activated
    {

        string contents = File.ReadAllText(@"C:\Users\Me\Desktop\JAM_MACHINE\record.txt");
        var fullPath = Path.GetFullPath(contents + ".mp3");

        wplayer.URL = fullPath;
        playSFX.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\PLAY.wav";
        pauseSFX.URL = @"C:\Users\Me\Desktop\JAM_MACHINE\PAUSE.wav";
        wplayer.controls.stop();
        playSFX.controls.stop();
        pauseSFX.controls.stop();

    }

    private void playbtn_Click(object sender, EventArgs e)
    {
        playSFX.controls.play();
        wplayer.controls.play();
    }

    private void pausebtn_Click(object sender, EventArgs e)
    {
        pauseSFX.controls.play();
        wplayer.controls.pause();
    }

    private void stopbtn_Click(object sender, EventArgs e)
    {
        pauseSFX.controls.play();
        wplayer.controls.stop();
        this.Visible = false;
        JAMS JAMS = new JAMS();
        JAMS.ShowDialog();

        if(JAMS.Visible == false)//if jams isnt open, open it
        {
            this.Visible = true;
        }
    }`

如果records.txt文件看起来有点像这样:

myFirstSong
mySecondSong
myThirdSong
Crazy
通过执行以下操作,可以获取所有文件路径:

private IEnumerable<string> GetFileList(string pathToRecords)
{
    var directory = new FileInfo(pathToRecords).DirectoryName;
    var songNames = File.ReadAllLines(pathToRecords);
    var filePaths = songNames.Select(songName => Path.Combine(directory, songName + ".mp3"));

    return filePaths;
}
然后,您可以将播放器url设置为列表中的一个路径:

var songPaths = GetFileList(@"c:\x\records.txt").ToList();
var firstSong = songPaths[0];
wplayer.URL = firstSong;

依此类推列表中剩余的歌曲。

如果您从
目录中的文件中读取的内容是
C:\Users\Me\Desktop\JAM\u MACHINE\JAMS
,那么您在代码中的何处添加歌曲标题,如
Crazy
var songPaths = GetFileList(@"c:\x\records.txt").ToList();
var firstSong = songPaths[0];
wplayer.URL = firstSong;