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

时间:2013-01-28 07:24:09

标签: c# delegates webbrowser-control

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

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

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

2 个答案:

答案 0 :(得分:0)

计时器的标记在线程池线程中触发。您必须使用webBrowser1 Invoke任何代码将其编组到UI线程或使用SynchronizationClass执行相同操作。

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

答案 1 :(得分:0)

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

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