c#如何通过子线程控制主线程控件呢?

我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错;
求大神贴点代码!

我用主线程弄个按钮是可以点击的,就是子线程不行

错误信息:
“System.InvalidCastException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生

其他信息: 指定的转换无效。

线程代码
HtmlElement ht = webBrowser1.Document.GetElementById("J_imlis");
HtmlElementCollection ht2 = ht.GetElementsByTagName("a");
foreach (HtmlElement item in ht2)
{
ab++;
if (ab == 1)
{
item.InvokeMember("click"); //执行点击

break;
}
}

2个回答

我用主线程弄个按钮是可以点击的,就是子线程不行

错误信息:
“System.InvalidCastException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生

其他信息: 指定的转换无效。

线程代码
HtmlElement ht = webBrowser1.Document.GetElementById("J_imlis");
HtmlElementCollection ht2 = ht.GetElementsByTagName("a");
foreach (HtmlElement item in ht2)
{
ab++;
if (ab == 1)
{
item.InvokeMember("click"); //执行点击

break;
}
}

我记得好像是为了线程安全,所以控件只能被创建的线程所调用。所以子线程是不能操作webBrowser1及其所属控件的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问