2012-10-28 45 views
0

请帮我理解如何使用类来分享变量。 我有3个表格和一个类来存储一些变量。在form1中,我调用myclass并设置变量。现在我显示form2和form2内我打电话form3视觉基本共享变量与类?

是否有可能从一个类,我从第一个窗体发送变量? MYCLASS代码如下所示:

Private _var As String 
Public Sub setvar(ByVal var As String) 
    _var = pvar 
End Sub 

Public Function getvar() As String 
    Return _var 
End Function 

从Form1中:

 Public class1 As myclass 
     class1 = New myclass 
     class1.setvar("test") 

现在,我想打电话给class1.getvar,我想这回我在第一形式输入的数值。可能吗 ?如果是,请帮助我如何?

感谢

+0

当你说“我打电话给form3”时,这通常会变得很糟糕。一个核心的面向对象的概念是,你从不*调用一个类。你调用一个方法。看到不同之处在于非常重要。 –

回答

1

因为你已经使用了“公共”访问修饰符你“class1的”变量定义,你应该能够访问它从任何地方访问到Form1的该实例在Form1上的一个字段。

Dim myString as String = form1.class1.getvar() 

虽然这样做可能会更简单。

OPTION1
如果是我,我宁愿在第一种形式创建MyClass的实例,然后将该实例传递给其他形式(可能通过构造函数)。

Public Class Form1 

    Private _instance As MyType 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     _instance = New MyType 

     Dim newForm As New Form2(_instance) 
    End Sub 

末级 修改窗体2和Form3的新方法以接受类型的MyClass一个参数:

Public Class Form2 

    Private _instance As MyType 

    Sub New(instance As MyType) 
     _instance = instance 
    End Sub 

End Class 

然后要传递的变量时在创建新的形式并将其存储在您可以在第二个表单的代码中的任意位置访问私人成员。

OPTION2
或者,您可以将class1的定义放入模块中,然后您可以从项目中的任何位置访问它。

+0

感谢您的回复。你能告诉我在哪里写这段代码吗? Public Sub New(instance As MyClass)thaks –

+0

我将该代码写入窗体的设计器文件。它部分工作公共小组新(BYVAL实例作为myclass) InitializeComponent() MsgBox(instance.getvar) End Sub它工作良好。给我正确的价值。但是我想从form2内部使用getvar,例如从按钮点击或任何其他事件。怎么做 ?谢谢 –

+0

在form2中创建一个MyClass类型的私有成员变量,并在其中存储引用(实例)。然后你可以在form2的任何地方使用它。 –