我可以在 vb.net Windows 窗体应用程序中使用 COLECONTROLModule 吗?

Can I use COleControlModule in a vb.net windows forms app?

本文关键字:COLECONTROLModule 应用程序 vb net Windows 窗体 我可以      更新时间:2023-10-16

我正在升级一个Windows表单应用程序。应用使用活动 x 控件 (ocx) 文件。我们已经让 ocx 编译并可以注册它。C++ active x 控件项目中的主类是 COLEControlModule。当我像这样将控件添加到 Windows 窗体应用程序时

Me.Controls.Add(Me.ActiveXClass)

我得到

Unable to cast COM object of type 'System.__ComObject' to class type 
'System.Windows.Forms.Control'. 

我知道活动的x类是一个com对象,我知道这个COleControlModule类一定与Windows窗体控件不兼容。我能做些什么来做到这一点吗?
任何帮助将不胜感激。

这不起作用,因为运行时可调用包装器 (RCW) 不是 Windows 窗体控件。只有 Windows 窗体控件才能工作;若要将 ActiveX 控件与窗体一起使用,必须为 ActiveX 控件生成 Windows 窗体包装器。这是使用 Aximp.exe 完成的,通常通过将控件添加到工具箱中,正如 Hans 建议的那样,然后将控件的实例拖到窗体中。

步骤如下:

从"工具">
  1. 菜单中选择"选择项目",或者右键单击"工具"选项卡
  2. 选择"COM 组件"选项卡
  3. 直接从列表中选择或通过"浏览"按钮选择 ActiveX 控件
  4. 从"工具"对话框中,用鼠标选择新添加的组件并将其拖动到窗体中。

对 ActiveX 控件的引用将添加到项目中,如以下示例中的 Adobe PDF 阅读器所示:

<ItemGroup>
<COMReference Include="AcroPDFLib">
<Guid>{05BFD3F1-6319-4F30-B752-C7A22889BCC4}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="AxAcroPDFLib">
<Guid>{05BFD3F1-6319-4F30-B752-C7A22889BCC4}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>aximp</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
</ItemGroup>

请注意,有两个条目,一个用于生成运行时可调用包装器(通过 tlbimp),另一个用于生成 AxImp 包装器(通过 aximp)。这些将在项目引用下的解决方案视图中查看。

相关文章:
  • 没有找到相关文章