我正在编写一个使用此代码在运行时创建表单的程序
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 :(得分:0)
如果将它们创建为表单变量,而不是在子本身中定义表单。然后,您可以从该表单中的任何子访问这些。
然后,您应该能够在表单上创建所需的任何内容,或者最好在表单上创建一个可以从其他地方调用的Public Sub。
答案 1 :(得分:0)
只需在类级frm2
方法之外声明Sub
数组。为了将来参考,在类级别声明的变量称为 fields 。字段的范围限定在类中,因此类中的任何方法都可以访问它们。例如:
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