目前遇到个难题已有一个现成的ocx,该ocx内有一些自动触发的事件,在c#的winform内调用一切ok。现在需要用c#写一个dll来调用这个ocx,问题在于不知道该如何调用ocx内的事件,因为没有窗口,无法将ocx直接托拽到窗口上,
仅仅通过引用那个ocx来调用代码会报错。未处理 System.Runtime.InteropServices.COMException
Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
Source="mscorlib"
ErrorCode=-2147418113
StackTrace: 我做了如下尝试:
在一个winform上,将ocx托拽到界面上,自然一切ok。然后将InitializeComponent中的this.Controls.Add(这个ocx对象) 语句注释掉,因为要使用dll 调用ocx,显然不可能有this.Controls。就报错了
引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。我查了下,msdn的解释是:只有在完成对 ActiveX 控件的实例化和初始化之后,才可以引用 ActiveX 控件的公有属性和方法,否则就会引发 AxHost.InvalidActiveXStateException 异常。
连接如下:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.axhost.invalidactivexstateexception(VS.80).aspx连接如下:dll中无法对ocx进行实例化啊,怎么办呢?
仅仅通过引用那个ocx来调用代码会报错。未处理 System.Runtime.InteropServices.COMException
Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
Source="mscorlib"
ErrorCode=-2147418113
StackTrace: 我做了如下尝试:
在一个winform上,将ocx托拽到界面上,自然一切ok。然后将InitializeComponent中的this.Controls.Add(这个ocx对象) 语句注释掉,因为要使用dll 调用ocx,显然不可能有this.Controls。就报错了
引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常。我查了下,msdn的解释是:只有在完成对 ActiveX 控件的实例化和初始化之后,才可以引用 ActiveX 控件的公有属性和方法,否则就会引发 AxHost.InvalidActiveXStateException 异常。
连接如下:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.axhost.invalidactivexstateexception(VS.80).aspx连接如下:dll中无法对ocx进行实例化啊,怎么办呢?
解决方案 »
- 求正则表达式获取表格内容
- C#新建的cs怎么调用form1的timer控件
- winform,如何把汉字转为utf8的字符
- C# 怎么判断一个文件的状态(正在被读、正在被写)
- 未能进入中断模式,原因如下:源文件"E:\.....cs",不属于正在调试的项目。
- ARCGIS ENGINE中怎么设置图层的alpha值?
- C#程序 + SQL 打包
- 一个菜鸟的iframe问题
- 超市收银小票打印机,机钱箱,价格显示器开发,请开发过的高手支招
- 求助:C#.NET生成的release的exe是否只能在装了.NET或SDK Framework的机器上运行?
- 关于C#写的服务器有哪些,大家聊聊
- Panel 显示文字
你参考下正常放到窗体上看控件相应的实例化代码,然后在你的DLL中手动编写对控件的实例化的代码,这样可以保证控件正常的被实例化,你这样试试看。应该没有问题。
对对 ActiveX 控件的实例化和初始化,如何做?