c# - ActiveX 初始化 : AxHost. 状态对象

标签 c# .net activex unity3d axhost

我正在尝试使用 WinFormsHost-Control 将 Unity3D-ActiveX 控件嵌入到 WPF-Form 中。

实际上在VS的属性窗口中设置路径时效果很好,但是在我的代码文件中设置时它不加载任何东西。这是控件的一个已知问题,但我想我可以简单地复制表单设计器的创建代码并手动初始化它。

在查看初始化代码时,我注意到代码中没有 src 属性,但属性窗口中使用了该属性。手动设置属性不起作用(抛出错误)。

经过一些测试后,我决定检查孔组件的 src 属性,但是 src 属性从未设置,我什至找不到路径。

最后的想法

我注意到 src-path 只能位于一个地方:窗体设计器生成的资源,它是 AxHost.State 的一个对象。 -类型。

问题

我如何创建一个有效的 AxHost.State 对象来初始化 Unity3D-ActiveX 控件,它应该加载我指定的 Unity3D 文件?

最佳答案

这是有效但有点慢的解决方案(注意:您需要在 Forms Designer 中初始化一次控件并将 OcxState 对象复制到程序集资源中):

// Create a ocx state object with the correct path
_Unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(_Unity)).BeginInit();
_Unity.OcxState = (AxHost.State)(Resources.Unity3DOcx);
_Unity.TabIndex = 0;
Controls.Add(_Unity);
((System.ComponentModel.ISupportInitialize)(_Unity)).EndInit();
_Unity.src = _File;
AxHost.State state = _Unity.OcxState;
_Unity.Dispose();

// Create the unity web player object
_Unity = new AxUnityWebPlayerAXLib.AxUnityWebPlayer();
((System.ComponentModel.ISupportInitialize)(_Unity)).BeginInit();
this.SuspendLayout();
_Unity.Dock = DockStyle.Fill;
_Unity.Name = "Unity";
_Unity.OcxState = state;
_Unity.TabIndex = 0;
Controls.Add(_Unity);
((System.ComponentModel.ISupportInitialize)(_Unity)).EndInit();
this.ResumeLayout(false);

关于c# - ActiveX 初始化 : AxHost. 状态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8735616/

相关文章:

JavaScript/C# 膨胀和收缩通过 XHR 发送的数据

.net - 运行Stanford.NLP.CoreNLP示例时出现TypeInitializationException

vba - ActiveX 控件命令按钮代码名称的虚假更改

c# - 我如何使用 C# 检查打印机是否已安装并准备就绪?

c# - 如何使用 HttpWebRequest 发布数据?

.net - RDLC 在半张 A4 上打印

vba - 缺少 Microsoft 通用控件

c++ - 关于 COM/ActiveX 对象的问题

c# - 什么是 "Nested Quantifier",为什么它会导致我的正则表达式失败?

.net - 设置 runat=server 时输入名称和 ID 会发生变化