初学者使用C#编码。我建立了一个媒体播放器,允许管理员创建和保存播放列表。客人应该能够加载播放列表并在所述播放列表上播放歌曲。不幸的是,每当客人加载创建的播放列表时,尝试播放播放列表中的任何歌曲时都会弹出错误消息。它似乎只加载路径细节,但不是实际的媒体。C#使用列表框创建,保存和播放播放列表
“类型‘System.IndexOutOfRangeException’的未处理的异常发生在WindowsFormsApplication1.exe
其他信息:索引阵列的边界之外。”
这是在列表框中的代码,我有:
axWindowsMediaPlayer1.URL = paths[lbPlaylist.SelectedIndex];
的代码下面的代码是在“创建播放列表”按钮编码:
private void btnCreate_Click(object sender, EventArgs e)
{
OpenFileDialog newPlaylist = new OpenFileDialog();
newPlaylist.InitialDirectory = "C:\\Users\\mklsingh\\Documents\\Visual Studio 2013\\Projects\\Media Player\\WindowsFormsApplication1\\Media Files";
newPlaylist.Filter = "MP3 Audio File (*.mp3)|*.mp3| Windows Media File (*.wma)|*.wma|WAV Audio File (*.wav)|*.wav|All Files (*.*)|*.*";
newPlaylist.RestoreDirectory = false;
newPlaylist.Multiselect = true;
if (newPlaylist.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
files = newPlaylist.SafeFileNames;
paths = newPlaylist.FileNames;
for (int list = 0; list < files.Length; list++)
{
lbPlaylist.Items.Add(files[list]);
}
}
}
下面的代码保存播放列表作为XML文件:
private void btnSave_Click(object sender, EventArgs e)
{
StreamWriter Write;
SaveFileDialog savePlaylist = new SaveFileDialog();
savePlaylist.RestoreDirectory = false;
try
{
savePlaylist.InitialDirectory = "C:\\Users\\mklsingh\\Documents\\Visual Studio 2013\\Projects\\Media Player\\WindowsFormsApplication1\\Media Files\\Playlist";
savePlaylist.Filter = ("XML File|*.xml|All Files|*.*");
savePlaylist.ShowDialog();
Write = new StreamWriter(savePlaylist.FileName);
for (int I = 0; I < lbPlaylist.Items.Count; I++)
{
Write.WriteLine(lbPlaylist.Items[I]);
}
Write.Close();
MessageBox.Show("Playlist saved!");
}
catch //(Exception ex)
{
return;
}
}
下面的代码加载保存的XML播放列表文件:
private void btnLoad_Click(object sender, EventArgs e)
{
OpenFileDialog loadPlaylist = new OpenFileDialog();
loadPlaylist.Multiselect = false;
this.lbPlaylist.Items.Clear();
try
{
loadPlaylist.ShowDialog();
loadPlaylist.InitialDirectory = "C:\\Users\\mklsingh\\Documents\\Visual Studio 2013\\Projects\\Media Player\\WindowsFormsApplication1\\Media Files\\Playlist";
//txtLoad.Text = loadPlaylist.Filename;
StreamReader playlist = new StreamReader(loadPlaylist.FileName);
while (playlist.Peek() >= 0)
lbPlaylist.Items.Add(playlist.ReadLine());
txtLoad.Text = loadPlaylist.FileName;
}
catch
{
return;
}
}
此外,如果用户选择一首歌曲并播放它,它将起作用。如果用户决定在当前播放列表上添加歌曲,则所选歌曲将不会播放,并且会弹出相同的错误。如果我点击“清除列表”并选择一首新歌曲,它仍然可以工作。
请让我知道你对我的代码的想法。我仍然是初学者,我发现很难理解我在网上看到的一些代码。哈哈。只想使我的保存播放列表和创建播放列表按钮的工作。谢谢。
首先,您可以检查以确保您尝试访问的索引存在。 if(lbPlaylist.SelectedIndex
nastassiar
这个if语句应该放在列表框中?对不起,这里真的很新鲜。 –