2

私は、相互運用フォーム ツールキットの使用に関する codeproject の記事に従っています (基本的には、開発者が VB6 で .net コンポーネントを実行できるようにすることで、VB6 プロジェクトを .net にゆっくりとアップグレードする方法です)。

http://www.codeproject.com/KB/vb-interop/VB6InteropToolkit2.aspx

.NET フォームは他のすべてのテスト プロジェクトおよび環境で正常に動作していますが、Form_load イベントが VB6 ランタイムで実行されると、実際には 2 回発生することがわかりました。

煩わしいだけでなく、初期化コードを 2 回実行する必要があります (2 回目の実行であらゆる種類の問題が発生します)。

なぜこれが起こっているのかについての説明はありますか (理由を理解したいのですが)?

これを回避するためのより良い方法はありますか

 If (runBefore = True) Then
4

2 に答える 2

2

別のモジュールからフォーム内のパブリック変数にアクセスして暗黙的にフォームの読み込みを開始し、読み込みが完了する前にフォームを明示的に表示すると、これが発生する可能性があります。

于 2009-09-19T02:19:53.373 に答える
0

こんにちは、私はこれを試しましたが、動作します..

私はそれをform_activateに入れました。基本的に、フォームが既にロードされているかどうかをテストします。ある場合は、アンロードします。i をカウンターとして使用します。

Private Sub Form_Activate()

Dim TestForm As Form
i = 0
For Each TestForm In Forms
    If TestForm.Name = "frmStocks" Then i = i + 1
    If i = 2 Then Unload Me
Next TestForm

サブ終了

于 2013-06-12T12:30:58.000 に答える