从计时器更改 Web 浏览器的标签内容

本文关键字:标签 浏览器 Web 计时器 | 更新日期: 2023-09-27 17:56:12

我正在使用webBrowser控件来显示网页。在创建网络浏览器时,我可以更改预定义标签的值。我的问题是,在timer_tick中我想更改相同的标签值。这是我的代码

if (currentlyRunningObject.Equals(webBrowser1))
{
     Application.DoEvents();
     HtmlElement test = webBrowser1.Document.All["test"];
     test.InnerHtml = "mmmmmmmm";
}

timer_tick我做了同样的事情,但 VS 在完成最后一行执行后停止调试

从计时器更改 Web 浏览器的标签内容

计时器

的时钟周期在线程池线程中触发。您必须使用 webBrowser1 调用任何代码以将其编送到 UI 线程,或使用 SynchronizationClass 执行相同的操作。

Action a = () => 
{
     HtmlElement test = webBrowser1.Document.All["test"];
     test.InnerHtml = "mmmmmmmm";
};
webBrowser1.Invoke(a);

在这里找到解决方案是计时器滴答中的代码

webBrowser1.Invoke(new ThreadStart(delegate
                    {
                        Application.DoEvents();
                        HtmlElement token2 = webBrowser1.Document.All["token2"];
                        //MessageBox.Show(token2.InnerHtml);
                        token2.InnerHtml = currentToken;
                    }));