問題已解決。c# - ArgumentOutOfRangeException:索引超出範圍 - 2形式
原來的「私人無效buttonSave_Click」修改爲:
private void buttonSave_Click(object sender, EventArgs e)
{
if (MusicCollection.FormMain.PublicVars.AlbumList.Count != 100)
{
MusicCollection.FormMain.PublicVars.AlbumList.Add(new Album(NameTextBox.Text));
MessageBox.Show("New Album added: " + NameTextBox.Text);
formMain.ListAlbums(formMain.AlbumsListBox.Items);
this.Close();
}
else
{
MessageBox.Show("No room for new album.");
this.Close();
}
}
原貼:
我是新來使用C#,所以appologies任何像樣明顯的錯誤或糟糕的編碼。
我試圖創建一個新的相冊對象(即從Form FormAlbumAC上的NameTextBox.Text獲取其名稱),並在用戶單擊FormAlbumAC上的保存按鈕時將其添加到List AlbumList。然後,我想列表FormMain上列表框中列出所有的AlbumList。
當我運行該程序,然後點擊保存按鈕,我得到錯誤「ArgumentOutOfRangeException是未處理的,指數超出範圍」在該行:
if (MusicCollection.FormMain.PublicVars.AlbumList[i] == null)
// line 8 on my excerpt from Form FormAblumAC
我不知道我是什麼做錯了。任何幫助將不勝感激,謝謝。
形式FormMain:
public const int MAX_ALBUMS = 100;
public int totalAlbums = 0;
public FormMain()
{
InitializeComponent();
}
public static class PublicVars
{
public static List<Album> AlbumList { get; set; }
static PublicVars()
{
AlbumList = new List<Album>(MAX_ALBUMS);
}
}
public ListBox AlbumListBox
{
get
{
return AlbumListBox;
}
}
public void ListAlbums(IList list)
{
list.Clear();
foreach (var album in PublicVars.AlbumList)
{
if (album == null)
continue;
list.Add(album.Name);
}
}
形式FormAlbumAC:
private FormMain formMain;
private void buttonSave_Click(object sender, EventArgs e)
{
int index = -1;
for (int i = 0; i < MusicCollection.FormMain.MAX_ALBUMS; ++i)
{
if (MusicCollection.FormMain.PublicVars.AlbumList[i] == null)
{
index = i;
break;
}
}
if (index != -1)
{
MusicCollection.FormMain.PublicVars.AlbumList[index] = new Album(NameTextBox.Text);
++formMain.totalAlbums;
MessageBox.Show("New Album added: " + NameTextBox.Text);
formMain.ListAlbums(formMain.AlbumsListBox.Items);
this.Close();
}
else
{
MessageBox.Show("No room for new album.");
this.Close();
}
}
你能發佈你聲明MAX_ABUMS的地方嗎? – Zyerah 2013-04-06 04:19:14
在FormMain的開頭,很抱歉,會添加。 – user2251281 2013-04-06 04:20:28
沒錯,但我們需要看代碼。 for循環中的條件語句是可疑的,我認爲你的問題與你聲明'MAX_ALBUMS'的東西有關。 – Zyerah 2013-04-06 04:21:11