表单加载事件使用Interop Forms Toolkit触发两次

时间:2009-09-18 20:20:33

标签: vb.net forms interop toolkit

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

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

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

不仅烦人,它强迫我的初始化代码执行两次(在第二次运行时导致所有类型的问题)。

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

除了

之外,还有什么更好的解决方法吗?
 If (runBefore = True) Then

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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

End Sub