Private Sub Command1_Click()
Set cmd = Controls.Add("VB.CommandButton", "cmd1")
cmd.Move 0, 0
cmd.Visible = True
End Sub
大家知道,用上面的代码可以动态生成一个标准的按钮控件,同时可以响应它的事件。
但当想生成控件数组时,并要响应它的事件,如何实现呢?
...全文
1227打赏收藏
如何响应动态生成控件的事件
Dim WithEvents cmd As CommandButton Private Sub Command1_Click() Set cmd = Controls.Add("VB.CommandButton", "cmd1") cmd.Move 0, 0 cmd.Visible = True End Sub 大家知道,用上面的代码可以动态生成一个标准的按钮控件,同时可以响应它的事件。 但当想生成控件数组时,并要响应它的事件,如何实现呢?
在VB中动态添加可响应消息的控件
在VB编程中,经常要根据不同的情况在运行时向窗口中添加或者删除控件,而各个控件还要
响应各种事件。在一般的情况下是首先在设计时将控件加入到窗口中,在它们的各个事件中写入
代码,然后将它们的Visible属性设置为False。在运行时再使控件显示出来,但是这样既不方便
同时也因为在设计时在窗口中加入太多的控件而使得程序的运行速度变慢。下面我向大家介绍一
种通过编程在运行时动态添加和删除控件的方法
首先建立一个工程文件,然后在Form1中加入以下的代码:
Dim WithEvents cmdMyCommand As VB.CommandButton
Option Explicit
'在下面的定义中,程序定义了一个TextBox控件、一个CommandButton控件
'和一个附加控件。
Dim WithEvents ctlDynamic As VBControlExtender
Dim WithEvents ctlText As VB.TextBox
Dim WithEvents ctlCommand As VB.CommandButton
Dim WithEvents ctlCommandDel As VB.CommandButton
Private Sub ctlCommandDel_Click()
Dim i As Integer
'将控件的许可证信息删除
Licenses.Remove "MSComctlLib.TreeCtrl"
If MsgBox("是否删除所有控件", vbYesNo) = vbYes Then
For i = 1 To Form1.Controls.Count
Controls.Remove 0
Next i
End If
End Sub
Private Sub ctlCommand_Click()
ctlText.Text = "你点击的是控制按钮"
End Sub
Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
'当点击树形控件的某一个条目后,在ctlText中显示条目。
If Info.Name = "Click" Then
ctlText.Text = "你点击的条目是 " & _
ctlDynamic.object.selecteditem.Text
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
' 将树形控件的许可证信息加入到许可证集合中
' 如果许可证已经存在,则会返回错误信息732
Licenses.Add "MSComctlLib.TreeCtrl"
' 在Form中动态的加入一个树形控件,如果你想树形控件建立到不同的
'容器中,象一个Frame控件或者PictureBox控件,你只要将Controls.Add
'函数的第三个参数改为特定的容器名就可以了
Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", _
"myctl", Form1)
'设置树形控件的位置和尺寸
ctlDynamic.Move 1, 1, 2500, 3500
'在树形控件中加入10个节点
For i = 1 To 10
ctlDynamic.object.nodes.Add Key:="Test" & Str(i), _
Text:="Test" & Str(i)
ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _
Relationship:=4, Text:="TestChild" & Str(i)
Next i
'使树形控件可见
ctlDynamic.Visible = True