调用System.Windows.Forms.Control.CreateControl()

时间:2017-08-23 15:30:42

标签: c# windows activex ocx winforms-interop

我有一个C#WPF项目,它使用(非图形)Active X控制器,它包含在Aximp.exe 从OCX文件生成的Windows窗体控件中(我无权访问它的源代码)码)。

使用以下代码实例化其中一个控制器时:

        // Create the interop host controls.
        var hostProq = new WindowsFormsHost();
        _AxProq = new AxProOCX.AxProq();
        hostProq.Child = _AxProq;
        _AxProq.CreateControl();

调用System.OverflowException时会抛出CreateControl()。调用堆栈如下所示:

System.Windows.Forms.AxHost.CreateWithLicense(string license, System.Guid clsid)    
System.Windows.Forms.AxHost.CreateInstanceCore(System.Guid clsid)   
System.Windows.Forms.AxHost.CreateInstance()    
System.Windows.Forms.AxHost.GetOcxCreate()  
System.Windows.Forms.AxHost.TransitionUpTo(int state = 2)   
System.Windows.Forms.AxHost.CreateHandle()  
System.Windows.Forms.Control.CreateControl(bool fIgnoreVisible = false) 
System.Windows.Forms.Control.CreateControl()

OCX文件似乎已正确安装和注册,因为其中的某些其他控件正常工作,并且此特定控件可用于ActiveX Control Test Container。该控件的早期版本可以使用,这在几周前就可以使用了。

环境是使用Visual Studio 2015的Windows 10 Pro。

我不确定如何排除例外。
是否由包装器或ActiveX控制器内部引起异常?
什么可以导致控件在ActiveX控件测试容器中工作,但不能在我的应用程序中工作?

0 个答案:

没有答案