AutoCAD中使用Webbrowser的诡异问题

问题还原:

  在CAD中弹出一个自己的窗体(测试时是非模态窗体),窗体中有一个Webbrowser和一个Button,在Button的click事件中给Webbrowser指定一个页面(自己的一个页面,里面主要包含一个表格和一些JS代码),然后使用Application.DoEvents强制等待Webbrowser打开的页面执行到一定程度,然后才允许程序继续执行;在窗体的Load事件中主动触发了了Button的click事件,Webbrowser执行正常;但是窗体打开之后如果再手动点击Button,那么就会使CAD崩溃。

  但是如果Load事件中不调用Button的click事件,在窗体Load事件中启动一个Timer,在Timer的tick事件中再调用Button的click事件,那么在窗体打开之后,不管点几次Button,都不会出现崩溃。

Button的Click事件代码示例:

private void button1_Click(object sender, EventArgs e)
{
    //打开一个页面
    webBrowser1.Navigate("http://192.168.1.11/a.html");
    //强制循环等待,直到确保页面中的JS执行完成(js代码在页面的window.onload时执行)
    while (webBrowser1.Document == null || webBrowser1.Document.Body == null || webBrowser1.Document.Body.OuterHtml.Contains("@@"))
    {
      Application.DoEvents();
    }
}    

如果这个窗体是一个单独的EXE程序,就算在窗体的Load事件中直接调用Button的click事件,在窗体打开后点击Button,也不会出现任何问题。

很诡异的一个问题。

private void Form3_Load(object sender, EventArgs e)
{   button1_Click(
null, null);   //timer1.Start(); }

转载于:https://www.cnblogs.com/bomb12138/p/7090028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值