将数据表从一种表单传递到另一种表单
我想将数据表复制到另一种表单。将数据表从一种表单传递到另一种表单
Form1.cs的
public DataTable Data1
{
get { return dtDetailsAll; }
}
Form2.cs
Form1 m = new Form1();
dtSessionst = m.Data1.Copy();
但是它不会复制的值。你能帮我吗?
您在Form2.cs
中有Form1
的错误实例。使用关键字new
:
Form1 m = new Form1();
创建一个新的实例,它是一个在全DataTable Data1
存在不同。
解决方案:您需要将正确的实例传递给Form2
。
1)创建在Form2
的第二构造函数可以取Form1
作为参数
2)将其保存在一个类域:
private Form1 frm1;
public Form2(Form1 f1)
{
frm1 = f1;
InitializeComponent();
}
3)现在可以使用该变量来访问Data1
:
dtSessionst = frm1.Data1.Copy();
然而我做到了这一点,empry form出现了,控件没有初始化。两个构造函数都应该有InitializeComponent(); ? –
我昨天看了你的评论。保留原始无参数构造函数并制作“第二个”构造函数非常重要。是的,两个构造函数都需要'InitializeComponent()'调用,否则表单上不会有控件。您可以从第二个构造函数中调用原始构造函数,如下所示:'public Form2(Form1 f1):this(){...}'这样可以调用InitializeComponent',而不管使用哪个构造函数。 –
您正在创建Form1的新(空)实例并从那里获取数据,当您首先打开它时是否有任何数据?因为这不会工作,如果没有。如果你需要表单2中的数据,只需将它作为参数传递给form2 :) – EpicKip
@EpicKip你能写出答案吗? –
你是否从form1打开form2?当你打开它时,form1中已经存在的数据? – EpicKip