문제가 해결되었습니다.C# - ArgumentOutOfRangeException : 인덱스가 범위를 벗어났습니다 - 2 양식
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();
}
}
원래의 게시물 :
원래 "개인 무효 buttonSave_Click"
이 변경되었습니다나는 C#을 사용하는 새로운 해요 어떤 알맞은 명백한 실수 나 끔찍한 코딩 appologies 때문에.
사용자가 FormAlbumAC에서 저장 버튼을 클릭하면 List AlbumList에 추가하는 새 Album 개체 (NameTextBox.Text에서 FormFormatACP의 이름을 가져옵니다)를 만들려고합니다. 그럼 FormMain의 ListBox에있는 모든 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
FormMain 시작 부분에 미안하지만 추가됩니다. – user2251281
맞지만 코드를 볼 필요가 있습니다. for 루프의 조건문은 의심스럽고, 여러분의 문제는 여러분이'MAX_ALBUMS'라고 선언 한 것과 관련이 있다고 생각합니다. – Zyerah