初學者使用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語句應該放在列表框中?對不起,這裏真的很新鮮。 –