WinForm与Javascript交互

WinForm与Javascript交互实现代理地图展示
本文介绍了一种在WinForm应用程序中通过浏览器控件与外部JS接口进行交互的方法,实现了综合调度系统中地图功能的集成,并详细解释了如何在WinForm中调用JS函数以及JS调用WinForm函数的过程。

在应用程序的集成过程中,有时候需要WinForm应用程序和Javascript程序进行交互。比如说:应用程序是一个综合调度系统,在整个综合调度系统中,要实现定位,显示地图。综合调度平台的大部分功能都是使用WinForm实现的;但是定位和地图部分都不是自己开发的需要使用第三方接口,实现地图的展示,而第三方的接口使用的是Javascript实现的。这种情况有一下两种方法解决:

l  浏览器显示地图,WinForm实现综合调度台的其他功能,使用socket通信方式或者其他方式实现web浏览器和综合调度台之间的一种交互。

l  使用WinForm的JS之间的直接交互。

以上两种方法:第一种方法明显的缺点就是:整个综合调度台的风格不一致,而且在开发过程中,调试麻烦,调试过程受网络的影响较大。第二中方法却从根本上克服了以上所有缺点。

如何实现WinForm和Javascript之间的交互成为解决这个问题的核心问题。所谓交互就是WinForm的应用程序能够调用Javascript的程序接口,同时JS的程序也能够调用WinForm的应用程序接口。

l  首先创建一个网页命名为:text.html  假设该网页的路径为:D:\\text.html  

l  创建一个WinForm应用程序,在应用程序窗体上添加一个浏览器控件:webBrowser1 

Text.html 的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

<title>Main Page</title>

 

<script type="text/javascript" language="javascript">

function  ShopXG(obj)

 {

        alert(obj);

  //alert("我要开网店、携购独立网店系统,模板最全,最专业的系统!");

 }

 

 

 function  InvokeFunc()

 {

  window.external.ShowMessage("呵呵");

 }

 

 

 

         </script>

</head>

<body>

         <input type="button" id="aa" value="测试" onclick="InvokeFunc();"/>

</body>

 

 

在WinForm的窗体Form1中添加一个button按钮。Button1用来测试调用JS事件

 

WinForm的后台代码如下:

 

 

    //要想调用JS的类都需要添加一下两句

 

[PermissionSet(SecurityAction.Demand, Name ="FullTrust")]

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    publicpartialclassForm1:Form

    {

        publicForm1()

        {

            InitializeComponent();

            this.webBrowser1.Url =newUri("D:\\text.html");

            webBrowser1.ObjectForScripting =this;    //这句是必不可少的,是调用JS的前提

        }

 

        privatevoidbutton1_Click(objectsender,EventArgse)

        {

            webBrowser1.Document.InvokeScript("ShopXG",newobject[]{"这是WinForm调用JS的一个测试!"});

        }

 

 

        publicvoidShowMessage(stringmessage)

        {

            MessageBox.Show("这是JS调用的WinFormc程序的一个测试!");

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值