蹭分
-----------------------
Dim WithEvents ListView1 As VBControlExtender
Private Sub Form_Load()
Licenses.Add "msComctllib.ListViewctrl.2", "x"
Set ListView1 = Me.Controls.Add("msComctllib.ListViewctrl.2", "listview1", Me)
ListView1.Visible = True
ListView1.Move 0, 0, 3000, 2000
End Sub
---------------------
Add 方法(Controls 集合)
Option Explicit
Private WithEvents extCtl As VBControlExtender
Private Sub Form_Load()
Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe"
Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1")
extCtl.Visible = True ' The control is invisible by default.
End Sub
Option Explicit
Dim WithEvents objExt As VBControlExtender '声明 Extender 变量
Private Sub LoadControl()
Licenses.Add "Project1.Control1", "xydsfasfjewfe"
Set objExt = Controls.Add("Project1.Control1", "myCtl")
objExt.Visible = True
End Sub
Private Sub extObj_ObjectEvent(Info As EventInfo)
'使用 Select Case 编程控件的事件。
Select Case Info.Name
Case "Click"
'这里处理 Click 事件。
'现在显示其他的 case
Case Else '未知事件
'这里处理未知事件。
End Select
End Sub
Option Explicit
'声明对象变量为 CommandButton 。
Private WithEvents cmdObject As CommandButton
Private Sub Form_Load()
Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible = True
cmdObject.Caption = "Dynamic CommandButton"
End Sub
Private Sub cmdObject_Click()
Print "This is a dynamically added control"
End Sub
Dim WithEvents ListView1 As VBControlExtender
Private Sub Form_Load()
Licenses.Add "msComctllib.ListViewctrl.2", "x"
Set ListView1 = Me.Controls.Add("msComctllib.ListViewctrl.2", "listview1", Me)
ListView1.Visible = True
ListView1.Move 0, 0, 3000, 2000
End Sub
分也不能白蹭,在此楼上已经说得很清楚使用VBControlExtender对象来处理。下面偶说一下新创建的控件其事件脚本如何处理(以楼上创建出的ListView1)。
在VB编辑器上方左边控件列表中选取ListView1,右边事件列表中选取ObjectEvent,该事件中可处理动态创建控件的所有事件,其中Info为事件对象参数Info.Name为事件名称,而Info.EventParameters为事件参数集合对象。故事件脚本可实现如下:
Private Sub ListView1_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "BeforeLabelEdit"
If 你想取消LabelEdit then
Info.EventParameters (1)=True 'Info.EventParameters (1)就是该事件的Cancel参数
else
end if
Case "Click"
Case "ItemClick"
End Select
Debug.Print Info.Name & "事件触发了"
End Sub
Dim WithEvents ListView1 As VBControlExtender
Private Sub Form_Load()
Licenses.Add "Comctl.ListViewctrl.1", "x"
Set ListView1 = Me.Controls.Add("Comctl.ListViewctrl.1", "listview1", Me)
ListView1.Visible = True
ListView1.Move 0, 0, 3000, 2000
End Sub