我需要用到数组控件,现在用如下代码生成了一部分
       For i = 1 To 10
            Set myLabel(i) = Form1.Controls.Add("vb.Label", "Label" & i & "")
            myLabel(i).Left = 100 + 100 * i
            myLabel(i).Top = 100 + 500 * i
            myLabel(i).Visible = True
            myLabel(i).Caption = "我是动态标签" & i
            myLabel(i).AutoSize = True
        Next
但是我在其后的编程中不知道应该如果调用和对其写代码,对
Private Sub Label1_Click(Index As Integer),Private Sub Label_Click(Index As Integer)等编程都没有反应,这是为什么,我应该怎么写呢。
另不希望用load label(i)的方式添加新控件对这种方式添加新控件的方式都应该注意什么啊,请高手指教。

解决方案 »

  1.   

    放在什么地方不是很重要,我上面的代码已经能动态生成label控件了,现在是我不清楚我生成的是不是数组控件,我怎么去访问和调用都访问不到。
      

  2.   

    无法生成,没必要要求那么高,只要在form上放一个index=0的控件就什么都好办了
      

  3.   

    那么能不能告诉我对于上面这种模式动态生成的控件,应该如何去调用呢,或者说他们的name什么的的应该是什么呢
      

  4.   

    '类模块代码:
    Option ExplicitPrivate WithEvents mvarCmBtn As CommandButton
    Dim BtnIndex As Integer
    Public Property Set CmBtn(ByVal vData As CommandButton)
        Set mvarCmBtn = vData
    End Property
    Public Property Get CmBtn() As CommandButton    Set CmBtn = mvarCmBtn
    End PropertyPrivate Sub mvarCmBtn_Click()
    Select Case BtnIndex                    '返回索引值
    Case 0
      'do something
    Case 1
       MsgBox BtnIndex
    Case 2
    Case Else
    End Select
    End SubPublic Property Let LetBtnIndex(p_BtnIndex)
    BtnIndex = p_BtnIndex
    End Property'窗体代码:
    Option Explicit
    Dim a() As Class1Private Sub Command1_Click()
    Me.Controls.Remove Me.Controls("cmdobj3") '删除控件
    End SubPrivate Sub Command2_Click()
    MsgBox a(0, 0).CmBtn.Value
    End SubPrivate Sub Form_Load()
    'Check1.Value = True
    ReDim a(5, 3)
    Dim I As Integer
    Dim J As Integer
    Dim k As Integer
    k = 1
    For I = 0 To 5
        For J = 0 To 3
            Set a(I, J) = New Class1
            Set a(I, J).CmBtn = Me.Controls.Add("VB.CommandButton", "cmdObj" & k)
            a(I, J).LetBtnIndex = k
            a(I, J).CmBtn.Visible = True
            a(I, J).CmBtn.Top = J * 500
            a(I, J).CmBtn.Left = I * 2000
            k = k + 1
        Next J
    Next I
    End Sub
      

  5.   

    楼上是用类自己定义了一个类似command的类,然后对其进行赋值等操作,但是能否对生成的控件进行编程呢
      

  6.   

    除了预先设计一个 Index=0 的 Label,没有其他方法创建可以处理消息的控件数组。
    因为不是控件数组,Private Sub Label_Click(Index As Integer) 毫无意义;因为事件处理过程必须前期绑定,虽然你动态创建的控件名称为 Label1、Label2……,Private Sub Label1_Click(Index As Integer) 依旧无效,除非你用下面的方式
    Private Label1 As Label
    Private Sub Form_Load()
      Set Label1 = Form1.Controls.Add("vb.Label", "Label1")
    End Sub
    Private Sub Label1_Click(Index As Integer)
      ……
    End Sub要么老老实实用预先设计的控件数组,要么象 myhgyp(也许是这样的,信不信由你) 那样用类来处理
      

  7.   

    恩,myhgyp(也许是这样的,信不信由你)得方法我也测试过了,确实可以对数组控件编程,最早我还在form中自己对按钮的click事件编程,没有反应,后来看了看都在类里面了。大约只能这样了吧,谢谢几位。