C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
188 个问题
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using WMPLib;
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;
//把urlList中存储的地址赋给播放器
axWindowsMediaPlayer1.URL = urlList[SelectedIndex];
}
}
}
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("选中的索引无效。");
}
}
}
}
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。