之前写了winfrom调用js的方法汇总(http://www.sufeinet.com/thread-3389-1-1.html),但那些用在post上还行,如果要基于google地图开发应用的话,那么用这种方法显然不合适.
之前看了别人写的用GoogleApi结合webbrowser控件做出来的app很棒,但是遇见获取地图元素时无法取到的情况,(比如画圆,我需要得到中心点经纬度以及半径)如果画个div,那么从div的其他属性还能获得值,可是调用google以后并不是以div的形式展现的.所以只有将值传递回来.
代码很少,就几句话.
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices; //记得u这俩.
using System.Security.Permissions;//记得u这俩.
namespace test
{
[PermissionSet(SecurityAction.Demand, Name ="FullTrust")]
[ComVisible(true)]//com+可见
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("Run", new object[] { "CShareFunction" });
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.ObjectForScripting = this;//具体公开的对象,这里可以公开自定义对象
webBrowser1.Navigate(Application.StartupPath + "/dom.html");
}
public void ShowMsg(string msg)
{
MessageBox.Show(msg);
}
}
}
Html部分:
[HTML] 纯文本查看 复制代码 <html>
<head>
</head>
<body>
</body>
<script type="text/javascript" charset="utf-8">
function Run(str)
{
window.external.ShowMsg(str);
}
</script>
</html>
要注意的地方
要公开对象记得加上
[PermissionSet(SecurityAction.Demand, Name ="FullTrust")]
[ComVisible(true)]
附件就不传了.代码都贴出来了.
HaveFun.
Ro4ters
12/02.2014
|