我一直在关注使用互操作表单工具包的代码项目文章(基本上是开发人员通过允许在VB6中运行.net组件将其VB6项目缓慢升级到.net的方式)
http://www.codeproject.com/KB/vb-interop/VB6InteropToolkit2.aspx
虽然.NET表单在所有其他测试项目和环境中都运行良好,但我发现Form_load事件在VB6运行时执行时实际上会触发两次。
不仅烦人,它强迫我的初始化代码执行两次(在第二次运行时导致所有类型的问题)。
有没有解释为什么会发生这种情况(我想了解原因)?
除了
之外,还有什么更好的解决方法吗? If (runBefore = True) Then
答案 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