天天看点

webbrowser控件调用html,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");

}

/// 

/// webbrowser文档加载完毕之后加载空气指数信息

/// 

/// 

/// 

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】

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 + "个监测点";

}

结束!!!

原文:http://www.cnblogs.com/dh-hui/p/6400821.html