列表框显示所有学生

时间:2016-01-23 17:33:31

标签: c# listbox

我想要一个列表框来显示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);
    }

2 个答案:

答案 0 :(得分:3)

对于“仅限一个学生”的问题,请从while循环中删除此行并将其放在其前面:

studentListBox.Items.Clear();

问题是您每次都要删除所有学生,然后再添加新学生。

答案 1 :(得分:0)

null可能会返回studentlist.findStudent(name)吗? 如果这是问题所在,那么您应该看到{{1}}方法。