2010-02-21 96 views
1

我正在查看VB 2008(express)中按钮数组的控件属性。我一直在MS上查看白皮书中的示例代码,与VB6中所做的相比,它让我的头部旋转起来了! (是的,我是一个业余爱好者,所以请原谅糟糕的编码和这里的经验可能是一个简单的问题...)visual basic 2008控件数组

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

我试图用一个比较简单的排列是这样的:如果我把它改成load方法

'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(i)数组可以从窗体中的其他函数访问?

回答

1

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

最简单的方法就是将Dim btn(30) As Button声明从加载方法中移出到类中(将其粘贴到加载方法上方的行中),然后就完成了。

有人可能会争辩编码标准和东西 - 但我认为这会让你的工作( - :

好吧,除了上述之外,你的评论,足够的代码来说明什么,我试图解释这段代码可以编译和运行 - 从表单类中的两种方法可访问按钮配置:

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 
+0

不幸的是,我不认为这工作...我不得不把它变成一个子程序,这是我做的,然后从窗体的加载方法中调用它,但我仍然无法获得按钮单击事件来查看或操纵btn(i)...仍然是范围问题? – 2010-02-21 23:47:00

+0

Erm,Dim for th e按钮需要在Class中,而不是在Sub中。 VB并不是我常用的武器选择......但我可以解决这个问题,会添加代码。 – Murph 2010-02-22 09:00:49

+0

我觉得我一旦搬进班级就已经工作了......这个周末一直在困惑这个问题:-)我在学习。慢慢地,但学习。 – 2010-02-22 13:28:09