2017-08-07 69 views
1

我想将数据表复制到另一种表单。将数据表从一种表单传递到另一种表单

Form1.cs的

public DataTable Data1 
{ 
    get { return dtDetailsAll; } 
} 

Form2.cs

Form1 m = new Form1(); 
dtSessionst = m.Data1.Copy(); 

但是它不会复制的值。你能帮我吗?

+0

您正在创建Form1的新(空)实例并从那里获取数据,当您首先打开它时是否有任何数据?因为这不会工作,如果没有。如果你需要表单2中的数据,只需将它作为参数传递给form2 :) – EpicKip

+0

@EpicKip你能写出答案吗? –

+0

你是否从form1打开form2?当你打开它时,form1中已经存在的数据? – EpicKip

回答

0

您在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(); 
+0

然而我做到了这一点,empry form出现了,控件没有初始化。两个构造函数都应该有InitializeComponent(); ? –

+0

我昨天看了你的评论。保留原始无参数构造函数并制作“第二个”构造函数非常重要。是的,两个构造函数都需要'InitializeComponent()'调用,否则表单上不会有控件。您可以从第二个构造函数中调用原始构造函数,如下所示:'public Form2(Form1 f1):this(){...}'这样可以调用InitializeComponent',而不管使用哪个构造函数。 –

相关问题