2014-09-01 55 views
1

我为下面显示的问题准备了一张图片。 enter image description here类中的数据依赖关系

现在我会告诉你我想要什么。正如你所看到的,我有三种形式。

  • Form1中得到了一些数据(如int,字符串,结构,阵列 - 这并不重要)从类
  • Form1中打开窗体2
  • 窗体2打开Form3

现在我想要从Form1访问Form1中的数据。这里是我的问题:如何创建这些表单的对象。我有一个问题要获得他们之间的正确数据依赖。 我没有代码,因为我只创建一个像这样的Dim f2 As Form2 = New Form2()这样的新表单实例,然后从Form2:Dim f3 As Form3 = New Form3() 然后在Form3中,我这样做:Dim f1 As Form1 = New Form1()并且我无法访问Form1中的数据。

+1

这个班可以负责所有这些。而不是从一个类中“获取数据”的形式,该类可以创建表单,显示表单并将所需数据推送到表单。当需要form2时,它也是由类创建,显示和管理的。etc表单最适合用户输入沙盒而非程序控制元素 – Plutonix 2014-09-01 12:07:31

回答

1

您可以重写构造为您Form2Form3采取的参数 - 特别是你可以从Form1使包含数据数组,然后通过传递数组Form2Form3

这是通过在Form2Form3后面的代码中创建一个Public Sub New方法来完成的,其签名包含要传递的数据类型。

您需要将传递的数据分配给构造函数中的私有变量,以便您可以在新窗体上使用其他方法引用它。

+0

只需添加。您可能想要在Form2和Form3中的类级别声明私有变量,然后使用传入重写构造函数的值设置它们。这将使它们可用于Form2和Form3中的其他方法。 – ChrisG 2014-09-01 15:29:11

+0

@ChrisG非常真实。我之前在表单设计中使用过这种方法。我会编辑它。 – Psychemaster 2014-09-01 15:30:22

+0

你觉得这个怎么样?在'Form1'中:'Dim f2 As Form2'和构造函数中:'f2 = New Form2(Me)'。接下来在Form2中:Dim f1 As Form1在构造函数中(它接受Form1类型的参数称为窗体):f1 = form。在'Form3'中:'Dim f2 As Form2'和构造函数中(也有Form2类型的参数称为窗体):'f2 = form'。然后我可以在'Form3'中使用这个访问:'f2.f1.data'。这个怎么样,这是正确的吗? – XardasLord 2014-09-02 06:12:59