Option Explicit
Dim WithEvents newchk As VB.CheckBox
Private Sub Form_Load() Dim i As Integer
Dim sname(5) As String
sname(0) = "a"
sname(1) = "b"
sname(2) = "c"
sname(3) = "d"
sname(4) = "e"
sname(5) = "f"
For i = 0 To 5
Set newchk = Controls.Add("vb.checkbox", "chk" & i, Me)
With newchk
.Visible = True
.Top = 300 * i + 200
.Left = 180
.Caption = sname(i)
.Width = 1500
.Height = 255
End With
NextEnd Sub
怎样响应每一个checkbox控件的事件????
Dim WithEvents newchk As VB.CheckBox
Private Sub Form_Load() Dim i As Integer
Dim sname(5) As String
sname(0) = "a"
sname(1) = "b"
sname(2) = "c"
sname(3) = "d"
sname(4) = "e"
sname(5) = "f"
For i = 0 To 5
Set newchk = Controls.Add("vb.checkbox", "chk" & i, Me)
With newchk
.Visible = True
.Top = 300 * i + 200
.Left = 180
.Caption = sname(i)
.Width = 1500
.Height = 255
End With
NextEnd Sub
怎样响应每一个checkbox控件的事件????
Dim WithEvents newchk_0 As VB.CheckBox
Dim WithEvents newchk_1 As VB.CheckBox
Dim WithEvents newchk_2 As VB.CheckBox
Dim WithEvents newchk_3 As VB.CheckBox
Dim WithEvents newchk_4 As VB.CheckBox
Dim WithEvents newchk_5 As VB.CheckBox
然后分别
Set newchk_0 = Controls.Add("vb.checkbox", "chk" & i, Me)
Set newchk_1 = Controls.Add("vb.checkbox", "chk" & i, Me)
....
然后才会响应事件
Private Sub newchk_0_Click()
MsgBox "Click"
End Sub
Private Sub newchk_1_Click()
MsgBox "Click"
End Sub
.....
如果withevents 不能创建数组, 如果没有withevents,却可以创建数组
确实有矛盾,不过既然是动态加载的控件,不要指望它功能有多强大
先创建一个checkbox的数组(如chkOne,index属性为0),那么他有一个Click事件
然后Form_Load()中用load 语句加载其它的(如:load chkOne(1),load chkOne(2) )
这样他们的Click事件都是一个,很好管理。(不过真要用还有很多细节问题。)
由于是控件数组, 你可以动态响应每个新添加的控件事件的, 根据index的不同判断