如何引用创建它的子控件之外的控件数组?

时间:2013-04-25 19:22:45

标签: vb.net

我正在编写一个使用此代码在运行时创建表单的程序

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中创建公共控件数组?

2 个答案:

答案 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