1

VBをVB.NETに変換しているときに、エラーが見つかりましたInvalidActiveXStateException。私のプログラムはメインフォームと多くのサブフォームを示しています。サブフォームをチェックしているときに、そのうちの1つにこのエラーがあり、そのフォームを開くことができませんが、他のフォームは正しく開くことができます。コードは同じです。そのフォームを開けないのはなぜですか?

私はインターネットから調査されていました、そしてほとんどの人はそれを言いました:

((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みました、そして私はそれが他の人に起こるかどうかをテストしようとしています。

4

2 に答える 2

0

アクティブXコントロールの標準的な変換/使用法の一部は、コントロールの状態を作成することです。この状態は常に正しく設定/作成されるとは限らず、デバッガーでアプリケーションを実行すると変更される場合があります。状態が無効な場合、この例外がスローされます。私は通常、アクティブなxコントロールを.netコントロール(既存のコントロールまたは同等のものを作成しているコントロール)に置き換えようとします。

おそらく、標準ツールの市販の代替品のいくつかは、この問題を回避するでしょう。

于 2012-08-09T02:47:09.563 に答える
0

私は同じ問題を抱えていましたが、CreateControlを呼び出すという提案された解決策を試しましたが成功しませんでした。

相互運用機能は.net2.0フレームワークを対象として生成され、4.0コードから呼び出されたときに問題が発生したことが判明しました。解決策は、 .NET FrameworkTools4.0を使用して相互運用機能を生成することでした。

于 2013-07-22T14:27:13.293 に答える