当我将VB转换为VB.NET时,我发现了错误InvalidActiveXStateException。我的程序有一个主窗体和多个子窗体,当我检查子窗体时,其中一个存在此错误,无法打开该窗体,但其他窗体可以正确打开。代码是一样的为什么我不能打开那个表格?
我在网上做过研究,大多数人都说:
((System.ComponentModel.ISupportInitialize)(this.ax)).BeginInit();
this.Controls.Add(ax);
((System.ComponentModel.ISupportInitialize)(this.ax)).EndInit();但是它似乎C#,而不是VB.NET,我不知道什么时候我能在我的程序中找到ax的名字。这是我程序代码的一部分。
Public Sub mnu_dceedc_enq_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles mnu_dceedc_enq.Click
If bolCheckSecurity("dcs_eedc_enq") Then
Unload_frm()
DCformfun = mnu_dceedc_enq.Name
frmDCEEDC.Show()
End If
End Sub
Private Sub chkfiltercase_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles chkfiltercase.CheckStateChanged
'20090401
'fgdetail_Click
Call ShowFolderDetail(fgdetail.get_TextMatrix(fgdetail.Row, 1), fgdetail.get_TextMatrix(fgdetail.Row, 2), CShort(txtbatchno.Text))
End Sub当我打开一个子表单时,它将从nu_dceedc_enq_Click开始,然后转到chkfiltercase_CheckStateChanged,但是当运行到Call ShowFolderDetail时,它会自动返回到form.show(),然后出现异常。
为什么会发生这个错误,我如何解决它?
测试后的更新:
我试着注释所有的子chkfiltercase_CheckStateChanged和表单发生成功,我正在尝试测试它是否会发生其他。
发布于 2012-08-09 02:47:09
active x控件的标准转换/使用的部分功能是为控件创建状态。此状态并不总是正确设置/创建,有时在调试器中运行应用程序时会发生更改。当状态无效时,将引发此异常。我通常尝试用一个.net控件替换active x控件(一个已经存在的控件,或者创建一个等效控件)。
据推测,一些替代标准工具的商业手段将避免这个问题。
发布于 2013-07-22 14:27:13
我也遇到了同样的问题,我尝试了调用CreateControl的建议解决方案,但没有成功。
结果发现,互操作是针对.net 2.0框架生成的,并且在从4.0代码中调用时出现了问题。解决方案是使用.NET框架工具4.0生成互操作。
https://stackoverflow.com/questions/11857135
复制相似问题