如何在许多web浏览器中使用不同的事件
本文关键字:事件 许多 web 浏览器 | 更新日期: 2023-09-27 18:01:05
我正在处理一个应用程序,我想创建多个线程,每个线程必须创建一个WebBrowser
,其中每个WebBrowser
都使用方法webBrowser_DocumentCompleted
。
如何使每个创建的WebBrowser
实例都有自己的DocumentCompleted
处理程序,而不是在所有实例中使用相同的webBrowser_DocumentCompleted
方法。
我解释:
在一种情况下,使用单个web浏览器进行操作
int a = 0;
private void button1_Click(object sender, EventArgs e)
{
methode1();
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (a == 1) methode2(wb);
if (a == 2) methode2(wb);
}
public void methode1()
{
webBrowser.Navigate("http://www.test.com");
a = 1;
}
public void methode2()
{
HtmlElement txt1 = webBrowser1.Document.GetElementById("tesxtbox1");
txt1.SetAttribute("value", "test");
webBrowser.Document.Forms[0].InvokeMember("submit");
a = 2;
}
public void methode3()
{
webBrowser.Navigate("http://www.test3.com");
}
但如果我想进行多次操作,即在butoon1中我添加:
private void button1_Click(object sender, EventArgs e)
{
for(int i=0; i<5 ;i++)
methode1();
}
然后,我想我必须有几个网络浏览器,所以解决方案是为每个操作创建一个线程
private void button1_Click(object sender, EventArgs e)
{
for(int i=0; i<5 ;i++)
{
Thread thread = new Thread(new ThreadStart(methode1));
thread.Start();
}
}
因此,线程创建的每个web浏览器都必须有自己的方法webBrowser_DocumentCompleted
,以免与其他web浏览器的结果混淆。
或者,对所有创建的web浏览器使用相同的方法webBrowser_DocumentCompleted
,但问题是如何指定哪个web浏览器,调用方法webbrowser_DocumentCompleted。
提前感谢
很容易更改方法的名称。
当您创建WebBrowser
时,您可以将DocumentCompleted
指定为您想要的任何方法,例如:
firstWebBrowser.DocumentCompleted += firstDocumentCompleted;
secondWebBrowser.DocumentCompleted += secondDocumentCompleted;
thirdWebBrowser.DocumentCompleted += thirdDocumentCompleted;
如果你使用的是设计器,它也同样简单。在事件选项卡中,只需键入一个新的(唯一的(方法名称。
既然你提到了线程,我确实设想了一个问题,如果你不预先控制你将要使用的web浏览器(以及事件处理程序(的数量。但是,如果您需要帮助,我们需要更具体的用例示例。