Option Explicit
Dim WithEvents objExt As VBControlExtender '声明 Extender 变量
Private Sub Form_Load()
    Licenses.Add "LicenseTest.UserControl1"
    Set objExt = Controls.Add("LicenseTest.UserControl1", "测试")
    objExt.Visible = True
'    objExt.PropertyTest = "测试"
'    Call objExt.test
End Sub
Private Sub objExt_ObjectEvent(Info As EventInfo)
   Debug.Print Info.Name
End Sub在objExt_ObjectEvent里能正常输出事件的名字
但是在Form_Load里却不能调用objExt的属性和Public方法
有人知道吗?

解决方案 »

  1.   

    Option Explicit
    Dim WithEvents objExt As VBControlExtender '声明 Extender 变量
    Private Sub Form_Load()
        Me.Show '------------------->加这句再试试
        Licenses.Add "LicenseTest.UserControl1"
        Set objExt = Controls.Add("LicenseTest.UserControl1", "测试")
        objExt.Visible = True
    '    objExt.PropertyTest = "测试"
    '    Call objExt.test
    End Sub
    Private Sub objExt_ObjectEvent(Info As EventInfo)
       Debug.Print Info.Name
    End Sub
      

  2.   

    Form_Load仅仅是将Form及其控件载入内存,控件及Form均为不可见.
    可以在Form_load中Call Me.Show , 就可调用objExt的属性/方法
      

  3.   

    加上Me.Show也不行,使用系统中未加载的控件调用里面的属性和Public方法都不行,事件触发是正常的
    Option Explicit
    Dim WithEvents objExt As VBControlExtender '声明 Extender 变量
        
    Private Sub Command1_Click()
        '这两句无法执行
        objExt.View = 3
        objExt.ListItems.Add , "test", "test"
    End Sub
    Private Sub Form_Load()
        Licenses.Add "Comctl.ListViewctrl.1"
        Set objExt = Controls.Add("Comctl.ListViewctrl.1", "测试")
        objExt.Visible = True
        objExt.Move 0, 0, 3000, 2000
    End Sub
    Private Sub objExt_ObjectEvent(Info As EventInfo)
       Debug.Print Info.Name
    End Sub
      

  4.   

    objExt.View 改为 objExt.object.view