2013-04-25 36 views
0

我正在寫,創建使用此代碼在運行形式的程序,如何在創建子控件之外引用控件數組?

Dim a As Integer = Screen.AllScreens.Length 
Dim frm2(a) As Form 
For b As Integer = 0 To a - 1 
    frm2(b) = new form 
    ' ... set attributes to the form here 
    frm2(b).Show() 
Next 

我的問題是我怎麼能後來從其他子訪問這些形式?例如,如果我想在這些表格上繪製圖形,我將如何訪問它們?它們在創建它們的子例程之外不可用,並且您無法在vb.net中創建一個公共的數組控件?

回答

0

剛剛宣佈frm2陣列您Sub方法之外,在類級別。對於未來的參考,在類級別聲明的變量稱爲領域。字段的範圍是該類,因此該類中的任何方法都可以訪問它們。例如:

Public Class MyClass 
    Private frm2() As Form 

    Public Sub CreateForms() 
     Dim a As Integer = Screen.AllScreens.Length 
     ReDim frm2(a) 
     For b As Integer = 0 To a - 1 
      frm2(b) = New Form() 
      ' ... set attributes to the form here 
      frm2(b).Show() 
     Next 
    End Sub 
End Class 

對於它的價值,我會建議使用一個List(Of Form)而不是一個數組。這樣,您不必擔心重新調整大小,例如:

Public Class MyClass 
    Private forms As New List(Of Form)() 

    Public Sub CreateForms() 
     For i As Integer = 0 To Screen.AllScreens.Length - 1 
      Dim frm2 As New Form() 
      ' ... set attributes to the form here 
      frm2.Show() 
      forms.Add(frm2) 
     Next 
    End Sub 
End Class 
+0

謝謝。認爲我有一個臨時的大腦放屁,因爲我昨晚想到了同樣的事情。由於某種原因,我曾想過嘗試過它,但它失敗了,但顯然我沒有。謝謝您的幫助。 -克里斯 – Manon1979 2013-04-26 12:20:33

0

而不是定義在子本身的形式,如果你創建它們作爲表單變量。然後,您可以從該表單中的任何子項訪問它們。

然後,您應該能夠創建任何您需要的形式,或最好創建可從其他地方被稱爲窗體上的公用Sub。

+0

您是否有示例?我無法爲每個表單定義一個變量,因爲我不知道需要多少表單。這取決於計算機有多少個屏幕。 – Manon1979 2013-04-25 20:03:38