You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#:无法隐式转换System.IO.FileInfo到string,媒体播放问题求助

解决ListBox双击播放音乐文件的报错问题

嘿,别慌,我来帮你捋捋这个播放报错的问题~你提到的核心问题确实大概率是files里的元素不是直接的文件路径字符串,或者你没拿到正确的完整路径,导致Windows Media Player无法识别。咱们一步步来解决:

先搞清楚files到底存的是什么

首先你得确认files变量的类型:

  • 如果是用Directory.GetFiles("你的音乐文件夹路径")获取的,那它本身就是字符串数组,每个元素都是完整的文件路径,这种情况直接用files[listBox1.SelectedIndex]应该没问题,但要先确保选中的索引有效(比如不是-1)。
  • 如果是用DirectoryInfo.GetFiles()获取的,那files是FileInfo[]数组,每个元素是FileInfo对象——这时候你直接用ToString()只会得到文件名(不是完整路径),当然会报错!这时候要取FileInfo的.FullName属性才能拿到完整路径。

针对不同情况的解决方案

情况1:files是FileInfo数组

如果你的files是这样定义的:

FileInfo[] files = new DirectoryInfo(@"C:\你的音乐文件夹").GetFiles();

那播放代码要改成这样:

// 先判断有没有选中项,防止索引无效
if(listBox1.SelectedIndex != -1)
{
    axWindowsMediaPlayer.URL = files[listBox1.SelectedIndex].FullName;
}

情况2:用ListBox绑定更稳妥(推荐新手用)

其实更靠谱的做法是把文件信息和ListBox绑定,让ListBox显示文件名,同时偷偷存好完整路径,这样不用自己维护files数组和选中索引的对应关系:

// 在Form初始化或者加载音乐列表的地方
private void Form1_Load(object sender, EventArgs e)
{
    // 获取音乐文件夹的所有文件
    FileInfo[] musicFiles = new DirectoryInfo(@"C:\你的音乐文件夹").GetFiles();
    // 设置ListBox显示文件名,存储完整路径
    listBox1.DisplayMember = "Name";
    listBox1.ValueMember = "FullName";
    // 绑定数据源
    listBox1.DataSource = musicFiles;
}

// 双击ListBox的事件处理方法
private void listBox1_DoubleClick(object sender, EventArgs e)
{
    if(listBox1.SelectedValue != null)
    {
        axWindowsMediaPlayer.URL = listBox1.SelectedValue.ToString();
    }
}

情况3:files是自定义对象数组

如果你自己定义了音乐文件的类,比如:

public class MusicFile
{
    public string FileName { get; set; }
    public string FullPath { get; set; }
}

那播放的时候要取对象的FullPath属性:

if(listBox1.SelectedIndex != -1)
{
    axWindowsMediaPlayer.URL = files[listBox1.SelectedIndex].FullPath;
}

额外注意点

  • 一定要加判断:listBox1.SelectedIndex != -1或者listBox1.SelectedValue != null,防止用户没选中任何项就双击,导致索引越界报错。
  • 确保路径是完整的绝对路径,相对路径有时候会让MediaPlayer找不到文件。

你提供的代码片段:public partial class Form1 : Form { public Form1() { Init...

内容的提问来源于stack exchange,提问作者mason22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:13:31