zoukankan      html  css  js  c++  java
  • winForm中如何实现Webbrowser控件加载html页面?

    Webbrowser控件加载html页面非常简单。首先拖一个webbrowser控件到窗体中,然后通过代码:webBrowser1.Navigate("cityApi.html");加载网页资源。

    如果要实现winform与网页进行交互需要用到事件webBrowser1_DocumentCompleted(即html文档加载完成后进行交互):

    winform后台可以通过语句:webBrowser1.Document.InvokeScript("loadInfo", new object[] {参数1,...,参数m});调用javascript函数loadInfo,实现将数据传到网页中;
    javascript函数可以通过语句:window.external.ShowMsg(str);调用winform后台函数ShowMsg(string str);

    下面的代码展示一个小例子:
    【FrmCityApi.cs】
          private void FrmCityApi_Load(object sender, EventArgs e)
           {
               webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
               //初始化webbrowser,保证js和C#的通信
               webBrowser1.ObjectForScripting = this;
               //加载webbrowser网页资源 
               webBrowser1.Navigate("cityApi.html");
           }
           /// <summary>
           /// webbrowser文档加载完毕之后加载空气指数信息
           /// </summary>
           /// <param name="sender"></param>
           /// <param name="e"></param>
           private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
           {
               try
               {
                   if (webBrowser1.Document != null)
                   { 
                       //加载空气指数信息
                       webBrowser1.Document.InvokeScript("loadInfo", new object[] { city_name, api_date.ToString(), api.ToString(), sitenum.ToString() }); 
                   }
               }
               catch (Exception)
               {
                   DialogHelper.DlgWarn(this, "加载空气指数信息错误");
               }
           }

    【cityApi.html】
    <script type="text/javascript"> 
        /*  function Run(str) {
              window.external.ShowMsg(str);
          }*/
        function loadInfo(cityName, apiDate, apidata, num) {
            document.getElementById("city_name").innerHTML = cityName;
            document.getElementById("api_time").innerHTML = "数据更新时间:" + apiDate;
            document.getElementById("city_api_data").innerHTML = apidata;
            document.getElementById("sites_count").innerHTML = num + "个监测点";
        }
    </script>

    结束!!!
  • 相关阅读:
    树形结构菜单,递归实现
    基于Vue的日历组件,可以标注重要日子
    关于element-ui级联菜单(城市三级联动菜单)和回显问题
    继承(面试问到)
    vue监听浏览器刷新
    Popover 弹出框,里面的表格点击后关闭弹窗
    el-table表格合并单元格
    对角线
    ElementUI中el-radio再次点击取消选中
    保留文本框换行和空格
  • 原文地址:https://www.cnblogs.com/dh-hui/p/6400821.html
Copyright © 2011-2022 走看看