2016-04-19 38 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本地主機它(用於測試)

相關問題