我想运行多个具有1个表单的实例,在该实例上我有一个动态的GeckoWebBrowser和一些自动化的任务,但是每次我创建一个新的表单实例时,其他GeckoWebBrowser都会变为非活动状态,并且只有最新创建的GeckoWebBrowser可以工作 救命!
Dim f As New Form2
f = New Form2
f.Show()
我在Form2上的代码
Imports Gecko
Public Class Form3
Friend WithEvents w As New GeckoWebBrowser
Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
w = New GeckoWebBrowser
Dim n As Integer = 100
For i = 0 To n
w.Navigate("http://google.com")
'do some stuff here
Next
End Sub
End Class
答案 0 :(得分:0)
我能够得到与您相同的行为。我找到了解决方案。您可能需要根据需要进行调整。我不知道为什么会这样,但是它与应用程序消息泵有关。无论如何,这就是我的工作方式。
使用一个按钮创建Form1
,以启动Form2
实例。
和代码:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New Form2
f.Show()
End Sub
End Class
使用Gecko WebBrowser和一个将在WebBrowser中启动导航的按钮创建Form2
。
和代码:
Imports System.Threading
Public Class Form2
Private _stack As New Stack(Of String)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i = 0 To 100
_stack.Push("http://google.com")
_stack.Push("https://www.wikipedia.org/")
Next
GeckoWebBrowser1.Navigate(_stack.Pop())
End Sub
Private Sub GeckoWebBrowser1_DocumentCompleted(sender As Object, e As Gecko.Events.GeckoDocumentCompletedEventArgs) Handles GeckoWebBrowser1.DocumentCompleted
Thread.Sleep(500)
GeckoWebBrowser1.Navigate(_stack.Pop())
End Sub
End Class
通过单击Form2
上的New Form
按钮来打开Form1
的多个实例。单击Start
上的Form2
按钮。这将填充要导航到的URL堆栈,并导航到该堆栈上的第一个URL。导航到每个链接后,DocumentCompleted
事件处理程序将触发导航到下一个链接。
正如我所说,您将不得不根据需要调整此解决方案。