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

4

2 回答 2

0

如果您将它们创建为表单变量,而不是在子本身中定义表单。然后,您可以从该表单中的任何子访问这些内容。

然后,您应该能够在表单上创建您需要的任何内容,或者最好在表单上创建一个可以从其他地方调用的 Public Sub。

于 2013-04-25T19:56:26.073 回答
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

对于它的价值,我建议使用 aList(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
于 2013-04-25T20:21:54.037 回答