为何使用WEBBROWSER的对象CLICK事件不能生效

来源:互联网 发布:放心的网络代销从哪找 编辑:程序博客网 时间:2024/05/21 06:19

     最近为方便同事,做了一个海淀驾校约车的软件。以前使用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的调用后果然没有问题了。

 

 

北京海淀驾校约车助手下载地址:http://download.csdn.net/source/1421667

原创粉丝点击