美好的一天
我为我的谷歌api建立了一个小网站(因为我没有找到在我的C#表单程序中使用它的方法)。我的想法是,当我点击地图图标时,事件需要在C#程序旁边触发。我在C#From上使用webbrowser工具来显示我的网站。我真的希望这是可能的。
如果无法实现上述目标,或者任何人对如何使用图标/按钮在表单应用程序上实现地图有更好的了解,那么这将非常有用。
我看过:Sharpmap - 但我的雇主并不喜欢这种表情 并且:ThinkGeo] - 花钱(仍然是一种选择)
答案 0 :(得分:0)
This documentation描述了Web浏览器控件与其所在表单之间的双向通信,其中包括从浏览器控件中引发要由表单处理的事件。
一些关键细节:
在Form_Load
事件中,控件的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>";
所以这个:
window.external.Test('called from script code')
在表单中调用Test
方法,将called from script code
作为参数传递。
public void Test(String message)
{
MessageBox.Show(message, "client code");
}
答案 1 :(得分:0)
Thx Scott 我得到了From来注册我的java Script事件。所有你需要做的就是Scot说的是添加这些命名空间:
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本地托管它(用于测试)