我有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
答案 0 :(得分:0)
您展示的代码不能包含s
为null
的错误。
该错误告诉您studentList_Form1
中的Form1
为null
。
但代码仍然毫无意义。您需要使用现有studentList_Form1
中的Form1
(该列表在某些时候仍需要实例化)才能添加项目。
答案 1 :(得分:0)
你应该添加新列表&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);
}