225 个问题
Hi @仔航 程 ,
在你的代码中,有两个地方可能会导致这个问题:
-
listBoxMusics_BindingContextChanged
方法中的SelectedIndex
。 -
urlList[SelectedIndex]
的访问。
为了确保在 SelectedIndex
有效时访问 urlList
,可以添加一个索引范围检查。请参考下面修改后的代码:
namespace media
{
public partial class Form1 : Form
{
// 声明一个list存储文件路径
List<string> urlList = new List<string>(); // 泛型
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
}
private void listBoxMusics_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
// 添加歌曲
private void btninput_Click(object sender, EventArgs e)
{
// 实例化一个打开文件的文件夹的对话框
OpenFileDialog of = new OpenFileDialog();
// 让选择器可以执行多选文件
of.Multiselect = true;
of.Title = "请选择音乐文件";
// 指定选择文件的类型
of.Filter = "(*.mp3)|*.mp3";
// 确定用户选择的是确定按钮
if (of.ShowDialog() == DialogResult.OK)
{
// 把用户选择的文件储存到数组中
string[] nameList = of.FileNames;
// 读取数组中的数据
foreach (string url in nameList)
{
// Path.GetFileNameWithoutExtension(url); 获取不具有扩展名的文件
listBoxMusics.Items.Add(Path.GetFileNameWithoutExtension(url));
urlList.Add(url);
}
}
}
private void btnPause_Click(object sender, EventArgs e)
{
}
private void btnStop_Click(object sender, EventArgs e)
{
}
private void btnLast_Click(object sender, EventArgs e)
{
}
private void btnNext_Click(object sender, EventArgs e)
{
}
// 列表选择发生变化时播放歌曲
private void listBoxMusics_BindingContextChanged(object sender, EventArgs e)
{
// ListBox中的索引和urlList中的索引相对应
// 获取当前选中歌曲的索引
int SelectedIndex = listBoxMusics.SelectedIndex;
// 检查索引是否有效
if (SelectedIndex >= 0 && SelectedIndex < urlList.Count)
{
// 把urlList中存储的地址赋给播放器
axWindowsMediaPlayer1.URL = urlList[SelectedIndex];
}
else
{
// 处理索引无效的情况,例如显示错误信息或日志记录
MessageBox.Show("选中的索引无效。");
}
}
}
}
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。