2012-10-28 68 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的任何地方使用它。 –