在c#中将项目从一个列表添加到另一个表单中的另一个列表

时间:2017-06-07 04:28:14

标签: c# winforms

我有Form1,其中显示ListBox中的学生列表。

我使用Form2来填充这个学生列表,我想要。

每次在Form2点击按钮时,

studentList_Form1都会更新Form1中的Form2

我想弄清楚的是如何实际做到这一点?因为我试过这个

Form1中

public List<Student> studentList_Form1;

public List<Student> StudentList_Form1
{
    get
    {
        return studentList_Form1;
    }
}

窗体2

public List<Student> studentList = new List<Student>();

private void update_main_student_list()
{
    using (Form1 newForm = new Form1())
    {
        foreach(Student s in studentList) 
        {
            newForm.StudentList_Form1.Add(s);
        }                
    }
    //As well as the code to populate studentList
}

但是我一直收到一个错误,说我需要在使用之前检查s是否为null。

Student是一个由字符串名称,字符串地址,int id

组成的类

5 个答案:

答案 0 :(得分:0)

您展示的代码不能包含snull的错误。

该错误告诉您studentList_Form1中的Form1null

但代码仍然毫无意义。您需要使用现有studentList_Form1中的Form1(该列表在某些时候仍需要实例化)才能添加项目。

答案 1 :(得分:0)

Form1中的

你应该添加新列表&lt;学生&gt;(); ,定义 studentList_Form1

public List<Student> studentList_Form1 = new List<Student>();

public List<Student> StudentList_Form1
{
    get
    {
       return studentList_Form1;
    }
}

答案 2 :(得分:0)

将Form1中的listList_Form1设为静态而不是创建新表单

private static List<Student> studentList_Form1 = new List<Student>();

public static List<Student> StudentList_Form1
{
    get
    {
       return studentList_Form1;
    }
}

答案 3 :(得分:0)

在Form2中创建一个事件,并在Form1中订阅此事件。更新Form1的事件处理程序中的列表。

答案 4 :(得分:-1)

<强> Form1中:

private List<Student> studentList_Form1=new List<Student>();

        public List<Student> StudentList_Form1
        {
            get
            { return studentList_Form1; }
        }

加载表单2:

Form2 frm = new Form2(this);
            frm.ShowDialog();

<强>窗体2:

    Form1 frm1;    
    public List<Student> studentList = new List<Student>();

    public Form2(Form1 frm)
            {
                InitializeComponent();
                frm1 = frm;

                for (int i = 0; i < 10; i++)
                    studentList.Add(new Student() { studentId = i, studentName = "Student " + i });

            }

将项目添加到存在于Form1中的studentList:

private void button1_Click(object sender, EventArgs e)
        {
            foreach (var std in studentList)
                frm1.StudentList_Form1.Add(std);
        }