2016-04-19 24 views
0

美好的一天如何使用webbrower对象中的脚本调用C#事件?

我为我的google api做了一个小网站(因为我没有找到在我的C#表单程序中使用它的方法)。这个想法是,当我点击地图图标时,事件需要在C#程序中触发。我正在使用我的C#From上的webbrowser工具来显示我的网站。我真的希望这是可能的。

如果上述不可能或者如果任何人有更好的想法如何在图标/按钮的窗体应用程序上实现地图,它将真的帮助。

我已经看过:Sharpmap - 但我的雇主不喜欢的外观 和:ThinkGeo] - 它的成本钱(仍然是一个选项)

+0

在[在WebBrowser中的文档中调用JavaScript中的JavaScript代码](http://stackoverflow.com/questions/3694028/invoke-c-sharp-code-from-javascript-in-a-document-in-a-webbrowser)? –

回答

0

This documentation描述Web浏览器之间的双向通信控制及其所在的表单,其中包括从浏览器控件中引发事件以由表单处理。

一些关键细节:

在情况下,控制的ObjectForScripting属性设置为以下形式:

webBrowser1.ObjectForScripting = this; 

在浏览器控件中的HTML,window.external用于访问方法'脚本对象'。

webBrowser1.DocumentText = 
     "<html><head><script>" + 
     "function test(message) { alert(message); }" + 
     "</script></head><body><button " + 
     "onclick=\"window.external.Test('called from script code')\">" + 
     "call client code from script code</button>" + 
     "</body></html>"; 

因此,这:

​​

调用形式内的Test方法,传递called from script code作为参数。

public void Test(String message) 
{ 
    MessageBox.Show(message, "client code"); 
} 
0

Thx Scott 我从注册我的Java Script事件。所有你需要做的是从哪个苏格兰人说,额外的就是添加这些命名空间:表单上面

using System.Runtime.InteropServices; 
using System.Security.Permissions; 

这OBJ

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 
[System.Runtime.InteropServices.ComVisibleAttribute(true)] 
public partial class Form1 : Form 
    {...} 

我也没有用webBrowser1.DocumentText我用webBrowser1.Url- - 我在第一个网站上添加了它。有这个问题,这个网站需要托管所以使用XAMPP本地主机它(用于测试)

相关问题