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");
}));