无法在 VBA 访问中捕获 ActiveX 图像组合控件的任何事件

Cannot catch any events of an ActiveX Image Combo Control in VBA Access

我在我的 VBA Access 应用程序中使用 ActiveX 图像组合控件,但我遇到了很多问题。几乎没有关于它的文档。我无法从控件中捕获任何事件。我尝试使用它们中的 "on change, on get focus, and on exit events" 和 none。当表单初始化时,事件会触发,仅此而已。有谁知道这个控件是怎么回事?我正在考虑是否应该减少损失并使用没有任何图像的普通组合框。

ActiveX控件的全称是"Microsoft ImageComboBox Control, version 6.0"

这是我的调试代码

Private Sub ImageCombo8_Change()
  Debug.Print "change"
End Sub

Private Sub ImageCombo8_Enter()
  Debug.Print "entered"
End Sub

Private Sub ImageCombo8_Exit(Cancel As Integer)
  Debug.Print "exit"
End Sub

Private Sub ImageCombo8_GotFocus()
  Debug.Print "focused"
End Sub

在初始化时,我得到这些输出

entered
focused
exit
change
change

当我实际对控件进行任何操作时,什么也没有发生。

设置控件的项目:

Private Sub Form_Load()
  Dim objNewItem As ComboItem
  Set objNewItem = ImageCombo8.ComboItems.Add(1, , "Option 1", "pic1key")
  objNewItem.Indentation = 1
  Set objNewItem = ImageCombo8.ComboItems.Add(2, , "Option 2", "pic2key")
  objNewItem.Indentation = 1
End Sub

我发现 GotFocus 事件仅在 Tab 进入控件时触发,而不是鼠标单击。只有 Change 事件在表单加载期间触发,它不会在选择项目时触发,也不会 Updated。 Enter、Exit、GotFocus、LostFocus 都会适当触发。此外,当单击列表中的项目时,会触发 Click 事件。

这是我的工作代码:

Private Sub Form_Load()
Dim objNewItem As ComboItem, x As Integer
For x = 1 to 2
  Set objNewItem = ImageCombo8.ComboItems.Add(x, , "Option " & x, "pic" & x & "key")
  objNewItem.Indentation = 1
Next
End Sub

Private Sub ImageCombo8_Click()
MsgBox Me.ImageCombo8.SelectedItem.Text
End Sub

即使 ControlSource 属性 在 属性 sheet 上显示可用,但如果绑定到某个字段,它也会出错。值 属性 在代码中也失败。使用文本 属性 从所选项目和代码中捕获信息以将数据保存到字段。

花了很长时间才搞清楚如何设置 ImageList 和 ImageCombo 控件。关于这些小动物的信息不多,而且大部分都涉及非 Access 程序。最后发现在设计视图中双击控件会打开一个对话框,然后发现在自定义 属性 上单击省略号也是一样的。