2

我一直在关注关于使用互操作表单工具包的 codeproject 文章(基本上是开发人员通过允许.net 组件在 VB6 中运行来将其 VB6 项目缓慢升级到 .net 的一种方式)

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

虽然 .NET 表单在所有其他测试项目和环境中都可以正常工作,但我发现 Form_load 事件在 VB6 运行时中执行后实际上会触发两次。

不仅烦人,它还迫使我的初始化代码执行两次(在第二次运行时导致各种问题)。

是否有任何解释为什么会发生这种情况(我想了解原因)?

除了解决这个问题还有什么更好的方法吗

 If (runBefore = True) Then
4

2 回答 2

2

如果您通过从另一个模块访问表单中的公共变量来隐式开始加载表单,然后在加载完成之前显式 .show 表单,则可能会发生这种情况。

于 2009-09-19T02:19:53.373 回答
0

嗨,我试过了,它有效..

我把它放在form_activate中。基本上是为了测试表单是否已经加载。如果是,则卸载它。我用 i 作为计数器。

私有子 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 回答