html 在 C# Web 浏览器中使用线程处理元素的属性
html element's attribute in c# web browser by using threading
我正在使用 c# 以 windows 形式制作 Web 浏览器,我可以通过单击按钮自动设置已加载 html 输入字段的值。当我简单地将代码放入按钮的点击事件中时,它的工作正常`
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
}`
但是当我尝试通过线程执行此操作时,出现错误
Specified cast is not valid?
private void button1_Click(object sender, EventArgs e)
{
Thread thread1 = new Thread(new ThreadStart(setvalues));
thread1.Start();
}
void setvalues()
{
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
Thread.Sleep(8000);
}
}
我的代码哪里出错了?有什么错误吗?我是初学者,我需要帮助
您不能在单独的线程中访问表单控件。在 setvalues()
试试这个:
Invoke((Action)(() => {
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
}));
我正在使用 c# 以 windows 形式制作 Web 浏览器,我可以通过单击按钮自动设置已加载 html 输入字段的值。当我简单地将代码放入按钮的点击事件中时,它的工作正常`
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
}`
但是当我尝试通过线程执行此操作时,出现错误
Specified cast is not valid?
private void button1_Click(object sender, EventArgs e)
{
Thread thread1 = new Thread(new ThreadStart(setvalues));
thread1.Start();
}
void setvalues()
{
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
Thread.Sleep(8000);
}
}
我的代码哪里出错了?有什么错误吗?我是初学者,我需要帮助
您不能在单独的线程中访问表单控件。在 setvalues()
试试这个:
Invoke((Action)(() => {
webBrowser1.Document.GetElementById("username").SetAttribute("value","admin");
webBrowser1.Document.GetElementById("password").SetAttribute("value","12345");
}));