我们在 VB.NET 2010 中实现了一个基于 WinForms UserControl 的 ActiveX 控件。它通过 COM Interop 在 VBA UserForms 上使用。一切正常 - 除了一件事。当输入焦点从 ActiveX 移动到用户窗体上的另一个 VBA 本机控件(比如命令按钮)时,我们无法检测到这个东西。在这种情况下,不会触发诸如 Leave 或 Validating 等标准 WinForms 控件事件。
如何跟踪它(更好地使用“托管”方式,没有 WinAPI 技巧)?
请注意,我们的 UserControl 包含其他 WinForms 控件,例如按钮或文本框,因此无论选择了哪个组成部分,我们都需要将整个控件公开为 ActiveX 的 LostFocus 事件。