gpt4 book ai didi

c# - 没有从列表中获得预期的索引

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:57 26 4
gpt4 key购买 nike

我有一个显示集合的列表框。最初,列表框仅包含两个对象的默认数据库。用户将新对象添加到集合中,并在列表框中更新。

在用户添加新对象之前,我的代码按预期工作。

将对象加载到列表框中的代码。

    private void FillStudentListBox()
{
lstStudents.Items.Clear();
for (int i = 0; i < students.Count; i++)
{
Student s = students[i];
lstStudents.Items.Add(s.GetDisplayText());
}
}

我的更新按钮代码:

    public void btnUpdate_Click(object sender, EventArgs e)
{
int target = Convert.ToInt16(lstStudents.SelectedIndex);
if (target != -1)
{
UpdateStudentScores updateStudentScores = new UpdateStudentScores(target);
updateStudentScores.Show();
}
}

如果我单击其中一个默认用户,然后单击“更新”,表单将打开并填充正确的数据。但是,如果我添加一个新对象,然后在新对象上单击“更新”,我的这部分代码会出现错误:

    public Student this [int i]
{
get
{
return students[i];
}
set
{
students[i] = value;
Changed(this);
}
}

我确定该集合未正确更新。此处某处:

    private void button2_Click(object sender, EventArgs e)
{
if (IsValidData())
{
List<string> result = txtScores.Text.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries).ToList();
student = new Student(txtName.Text, result.Select(int.Parse).ToList());
this.Close();
}

}

列表框已正确填充,但索引计数仍为 2,而应为 3。我在此过程中犯了什么简单错误?

这是应该将学生添加到我的收藏中的位置:

    private void btnAddNew_Click(object sender, EventArgs e)
{
AddNewStudent addStudentForm = new AddNewStudent();
Student student = addStudentForm.GetNewStudent();
if (student != null)
{
students += student;
}
}

我觉得这段代码被设计为在单击按钮时已经完成了学生对象。

最佳答案

数组一旦被声明就是固定长度的。尝试从数组中提取数据时出现 OutOfRangeException 通常表示您正在搜索不存在的索引。

为什么不用数组,为什么不用列表呢?然后,您可以使用 foreach 之类的东西。

但如果您不想这样做,您将不得不找到一种方法来更新您的数组(将其重新定义为更大),以便它不会尝试返回超出范围的数据。 :)

关于c# - 没有从列表中获得预期的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com