2011-12-04 115 views
0

Salvete!我想在單擊按鈕時創建類的新實例,但我需要使用表單上的其他控件與該類的成員進行交互,所以我需要該類具有全局範圍。我知道我可以在formload中調用新類,但是該類創建了某些需要當前的變量。如果它是在formload上完成的,則變量不會是最新的,因爲如果類是在formload中創建的,那麼它在當時會有不同的信息。當然,必須有一種方法可以從可以從同一類的其他子類訪問的子內創建myClass的實例。如何從函數調用具有全局範圍的新類

事情是這樣的: 點擊myForm.button1dim myclassInstance as new myClass

然後,點擊myForm.button2,使mylabel.text = myClassiInstance.myvariable

回答

1

首先,你可能有問題,因爲MyClass的是保留關鍵字,所以如果你想創建一個類使用這個名字,你就需要選擇不同的類名。

話雖如此,我相信你想要的東西類似於以下內容,我們將類的實例作爲表單的私有成員存儲。只要表單存在,此實例就會「活着」,因此如果它需要在表單之間共享,那麼您需要將實例移動到不同的位置(全局變量或共享成員)。

Public Class Form1 

    Private m_CurrentInstance As ThisIsMyClass 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     m_CurrentInstance = New ThisIsMyClass 
    End Sub 

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click 
     If m_CurrentInstance IsNot Nothing Then 
      myLabel.Text = m_CurrentInstance.MyVariable 
     End If 
    End Sub 
End Class 
+0

我剛剛以「MyClass」爲例,我沒有意識到它是保留的。無論如何,這是它!這正是我需要的。我將此標記爲已接受。謝謝! (並感謝您修復我的問題的樣式顯示!) – bgmCoder

1

這很難明白你問什麼,但看起來你只是想看看Shared關鍵字。基本共享意味着單個實例。

因此,無論您將其應用於此,只會創建一次,並且與類的類型不同,而不是其實例。

Private Shared sharedInt As Integer 
    Private Shared sharedPropValue As String 

How to create and use shared members by using Visual Basic .NET

+0

也許我應該把「Public Sub New()」帶出我的班級嗎?我對OOP有點新鮮,在一些地方仍然感到困惑。但是除了少數幾個地方我不使用這個類,而且我也不明白爲什麼我需要改變它的一個新實例的參數。然後,當我在課堂上調用函數時,它將是最新的信息。那麼我可以在我的表單類中將該類作爲公共屬性?那有意義嗎? – bgmCoder

+0

嗯,我試圖刪除「公共小組新()」,它編譯,但是當我嘗試訪問該類,它告訴我無論如何創建一個新的實例。 – bgmCoder

相關問題