zoukankan      html  css  js  c++  java
  • 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(); }
  • 相关阅读:
    UML用例图
    Google Map API 文档
    chrome 使用各种搜索引擎的方法 GIS
    javaScript 获得触发事件的元素 支持IE FireFox GIS
    html 的路径 GIS
    JavaScript prototype GIS
    chromium 的资源管理 的grit GIS
    [原]使用ucenter最土团购整合DX2bbs的心得
    [转]sqlserver日期函数
    最土Ajax实现/json
  • 原文地址:https://www.cnblogs.com/bomb12138/p/7090028.html
Copyright © 2011-2022 走看看