我想要一个列表框来显示M5级等所有学生,但它只显示一个学生。
另一个问题是,当我从列表框中随机选择一个名字时,学生的信息将显示在右侧,但是当我点击学生时,出现了错误,无法处理nullreferenceexception。
这是我的代码:
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
fileToolStripMenuItem.Text = openFileDialog1.FileName;
StreamReader sr = new StreamReader(openFileDialog1.FileName);
string line = "";
while ((line = sr.ReadLine()) != null)
{
string name = "";
string gender = "";
char[] selected = line.ToCharArray();
for (int i = 0; i < selected.Length; i++)
{
if (selected[i] != '(')
{
name += selected[i];
}
else if (selected[i] == '(')
{
gender += selected[i + 1];
break;
}
}
Student student = new Student();
student.setName(name);
student.setGender(gender);
studentListBox.Items.Clear();
birthdatePicker.Value = DateTime.Now;
studentlist.addStudent(student);
studentListBox.Items.Add(student);
}
sr.Close();
private void studentListBox_SelectedIndexChanged(object sender, EventArgs e)
{
string name = studentListBox.SelectedItem.ToString();
Student s = studentlist.findStudent(name);
s.setName(studentNameTB.Text); <---Error (nullreferenceexception was unhandled)
s.setGender(genderTB.Text);
s.setBirthDate(birthdatePicker.Value);
}
答案 0 :(得分:3)
对于“仅限一个学生”的问题,请从while循环中删除此行并将其放在其前面:
studentListBox.Items.Clear();
问题是您每次都要删除所有学生,然后再添加新学生。
答案 1 :(得分:0)
null
可能会返回studentlist.findStudent(name)
吗?
如果这是问题所在,那么您应该看到{{1}}方法。