WebBrowser click 事件无法触发的文章,求解

cfesc9 2011-03-25 04:31:17
发现这么一篇文章,最后一句“修改了WebBrowser的调用后果然没有问题了”,实在不理解,有哪位老大帮咱解释下,看这位前辈说的这是嘛意思呀,谢谢!

最近为方便同事,做了一个海淀驾校约车的软件。以前使用VS2003下的WebBrowser控件虽然没有封装,但是掌握了技巧以后很容易。所以信心满满的做这个软件,惊喜的发现,WebBrower已经被封装过了,很多功能可以很轻松的使用。

但是做到自动约车的时候,需要两次连续的点击动作,结果发现,点击事件无法立刻被执行。调用点击事件代码如下:

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
clickObject("button1");
clickObject("button2");
}
void clickObject(string objectId)
{
HtmlDocument doc = this.webBrowser1.Document;
HtmlElement input = null;
input = doc.GetElementById(objectId);
input.InvokeMember("click");
}

出现的问题是,虽然执行完了代码,但是点击动作并不立刻在页面上呈现,而是等待所有的函数执行完成退出后才会发生。刚开始以为是需要等待一段时间才可以发生,因此加了无限循环等待的代码,但是仍然不会执行该动作。

为了确定是哪里的问题,将上边的代码从整个流程中提出,放到了一个按钮中。页面到相应的地址后点击此按钮,发现代码可以正确的被执行。

综合以上的现象发现,如果调用是由Form窗体引发的,则可以立刻执行,而由WebBrowser对象的事件引发则不会立刻执行,要等到事件执行完以后,这些代码的效果才会有所体现。根据这一结论修改了WebBrowser的调用后果然没有问题了。
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfesc9 2011-05-17
  • 打赏
  • 举报
回复
怎么就无人问津呢?
cfesc9 2011-03-25
  • 打赏
  • 举报
回复
就找到这么一篇文章,还说得有头没尾,实在不理解呀

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧