'类代码: Option ExplicitPrivate WithEvents mvarCmBtn As CommandButton 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() MsgBox mvarCmBtn.Index '返回索引值 End Sub'窗体代码: Option Explicit Dim a() As Class1Private Sub Command1_Click() Me.Controls.Remove Me.Controls("cmdobj3") '删除控件 End SubPrivate Sub Form_Load() ReDim a(5) Dim i As Integer For i = 0 To 5 Set a(i) = New Class1 Set a(i).CmBtn = Me.Controls.Add("VB.CommandButton", "cmdObj" & i) a(i).CmBtn.Visible = True a(i).CmBtn.Top = i * 500 Next i End Sub
'类代码: 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() MsgBox BtnIndex '返回索引值 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 Form_Load() ReDim a(5) Dim I As Integer For I = 0 To 5 Set a(I) = New Class1 Set a(I).CmBtn = Me.Controls.Add("VB.CommandButton", "cmdObj" & I) a(I).LetBtnIndex = I a(I).CmBtn.Visible = True a(I).CmBtn.Top = I * 500 Next I End Sub以上代码已经测试通过
Option ExplicitPrivate WithEvents mvarCmBtn As CommandButton
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()
MsgBox mvarCmBtn.Index '返回索引值
End Sub'窗体代码:
Option Explicit
Dim a() As Class1Private Sub Command1_Click()
Me.Controls.Remove Me.Controls("cmdobj3") '删除控件
End SubPrivate Sub Form_Load()
ReDim a(5)
Dim i As Integer
For i = 0 To 5
Set a(i) = New Class1
Set a(i).CmBtn = Me.Controls.Add("VB.CommandButton", "cmdObj" & i)
a(i).CmBtn.Visible = True
a(i).CmBtn.Top = i * 500
Next i
End Sub
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()
MsgBox BtnIndex '返回索引值
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 Form_Load()
ReDim a(5)
Dim I As Integer
For I = 0 To 5
Set a(I) = New Class1
Set a(I).CmBtn = Me.Controls.Add("VB.CommandButton", "cmdObj" & I)
a(I).LetBtnIndex = I
a(I).CmBtn.Visible = True
a(I).CmBtn.Top = I * 500
Next I
End Sub以上代码已经测试通过
控件数组,有个Index属性,可返回该控件在数组的索引值。
一、是类似于myhgyp那种的集合添加,但这种方法不能直接添加控件数组
二、使用预建控件数组,用load方法添加,楼主需要Index属性,当然用的就是这种?控件数组的点击事件会比普通控件多返回一个参数:Index,这是不是你要的?