Vb.net visual basic 2008控件阵列

Vb.net visual basic 2008控件阵列,vb.net,control-array,Vb.net,Control Array,我正在研究VB2008(express)中按钮数组的控制属性。我一直在看MS白皮书中的示例代码,与在VB6中所做的相比,这让我有些头晕目眩!(是的,我是一个业余爱好者,所以请原谅我糟糕的编码,对于这里有经验的人来说,这可能是一个简单的问题……) 如果我阅读正确,现在正确的方法是创建一个单独的类,为该类创建构造函数,等等,然后在项目中实例化它 我尝试使用一个相对简单的数组,如下所示: 'Create buttons 'Dim btn(30) As Button 'For i

我正在研究VB2008(express)中按钮数组的控制属性。我一直在看MS白皮书中的示例代码,与在VB6中所做的相比,这让我有些头晕目眩!(是的,我是一个业余爱好者,所以请原谅我糟糕的编码,对于这里有经验的人来说,这可能是一个简单的问题……)

如果我阅读正确,现在正确的方法是创建一个单独的类,为该类创建构造函数,等等,然后在项目中实例化它

我尝试使用一个相对简单的数组,如下所示:

    'Create buttons
    'Dim btn(30) As Button
    'For i As Integer = 0 To 29
    '    btn(i) = New Button()
    '    btn(i).Width = 100
    '    btn(i).Height = 30
    '    btn(i).Text = i + 1

    '    btn(0).Left = 120
    '    btn(0).Top = 100

    '    If i >= 1 And i <= 14 Then
    '        btn(i).Left = 120
    '        btn(i).Top = btn(0).Top + (i * 30)
    '    End If

    '    If i = 15 Then
    '        btn(15).Left = 235
    '        btn(15).Top = 100
    '    End If

    '    If i >= 16 And i <= 29 Then
    '        btn(i).Left = 235
    '        btn(i).Top = btn(0).Top + ((i Mod 15) * 30)
    '    End If
    '    Me.Controls.Add(btn(i))

    'Next
创建按钮 '调光btn(30)As按钮 '对于i作为整数=0到29 'btn(i)=新建按钮() 'btn(i).宽度=100 'btn(i).高度=30 'btn(i).Text=i+1 'btn(0).左=120 'btn(0)。顶部=100
'如果i>=1且i=16且i,则需要使按钮数组成为类中的字段或属性,而不是load方法中的字段或属性

最简单的方法是只需将
Dim btn(30)As按钮
声明从load方法移到类中(将其粘贴在load方法上方的行上),就完成了

有人可能会争论编码标准之类的问题,但我认为这会让你工作(-:

好的,除了上面的内容和您的评论,还有足够的代码来说明我试图解释的内容。这段代码将编译并运行-button数组,该数组可从form类中的两个方法访问:

Public Class Form1

    Dim btn(30) As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i As Integer = 0 To 29
            btn(i) = New Button
        Next
    End Sub

    Private Sub DoSomethingElse()
        For i As Integer = 0 To 29
            btn(i).Text = String.Format("{0}", i + 1)
        Next
    End Sub

End Class

您需要使按钮数组成为类中的字段或属性,而不是load方法中的字段或属性

最简单的方法是只需将
Dim btn(30)As按钮
声明从load方法移到类中(将其粘贴在load方法上方的行上),就完成了

有人可能会争论编码标准之类的问题,但我认为这会让你工作(-:

好的,除了上面的内容和您的评论,还有足够的代码来说明我试图解释的内容。这段代码将编译并运行-button数组,该数组可从form类中的两个方法访问:

Public Class Form1

    Dim btn(30) As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i As Integer = 0 To 29
            btn(i) = New Button
        Next
    End Sub

    Private Sub DoSomethingElse()
        For i As Integer = 0 To 29
            btn(i).Text = String.Format("{0}", i + 1)
        Next
    End Sub

End Class

不幸的是,我认为这不起作用……我必须将它转换成一个子程序,我这样做了,然后从表单的load方法调用它,但我仍然无法获得一个按钮单击事件来查看或操作btn(I)…仍然是一个范围问题?呃,按钮的Dim需要在类中而不是子类中。VB不是我通常选择的武器…但我可以解决这个问题,将添加代码。我想我在进入类后就可以工作了…周末一直在困惑:-)我正在学习。慢慢地,但正在学习。不幸的是,我认为这不起作用……我必须将它转换成一个子程序,我做到了,然后从表单的加载方法调用它,但我仍然无法获得一个按钮单击事件来查看或操作btn(I)…仍然是一个范围问题吗?呃,按钮的Dim需要在类中而不是子类中。VB不是我通常选择的武器…但我可以解决这个问题,将添加代码。我想我在进入类后就可以工作了…周末一直在困惑:-)我正在学习。慢慢地,但是学习。