我可以在 vb.net Windows 窗体应用程序中使用 COLECONTROLModule 吗?
Can I use COleControlModule in a vb.net windows forms app?
我正在升级一个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 建议的那样,然后将控件的实例拖到窗体中。
步骤如下:
从"工具">- 菜单中选择"选择项目",或者右键单击"工具"选项卡
- 选择"COM 组件"选项卡
- 直接从列表中选择或通过"浏览"按钮选择 ActiveX 控件
- 从"工具"对话框中,用鼠标选择新添加的组件并将其拖动到窗体中。
对 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)。这些将在项目引用下的解决方案视图中查看。
相关文章:
- 没有找到相关文章