2014-02-21 68 views
1

我正在開發一個項目,將Google Maps JavaScript API V3引入WPF,方法是顯示包含地圖控件和所有JavaScript函數的HTML頁面在WPF中的WebBrowser控件。然後,我使用WebBrowser上的InvokeScript來運行我編寫的JavaScript函數,這樣我就可以使用JavaScript作爲兩者之間的橋樑,從C#本質上控制地圖。如何禁用對WPF WebBrowser控件的所有控制,但不顯示其顯示的HTML頁面

這不是一個問題,而是一個需求。除了頁面上的地圖之外,我不希望用戶對WebBrowser有任何控制。那麼我怎樣才能消除它上面的所有控制?從頁面上的每個ContextMenu和任何文本到F5刷新快捷方式的所有內容都顯示要求啓用功能或ActiveX需要刪除或至少surpressed,以便他們不做任何事情,我最終得到的控制只是用戶無法控制頁面(地圖)上的內容,從而呈現其HTML源代碼。我該如何做到這一點,如果可能的話,謝謝。

+0

嘗試擴展WPF工具包中的繁忙指標 http://wpftoolkit.codeplex.com/wikipage?title=BusyIndi​​cator –

+0

@MayurDhingra看起來像是一個notificati我想禁用WebBrowser上的所有控件,因此它只呈現用戶可以與之交互的頁面。 –

回答

0

@HenryHunt,你的意思是禁用上下文菜單(右鍵點擊選項)?然後在屬性窗口中設置IsWebBrowserContextMenuEnabled' to 'False

+0

你也可以選擇你想要禁用的選項,如「導航」,「快捷方式」等屬性窗口 – Satish

+0

我使用WPF,所以這不是一個屬性。我還需要刪除F5刷新動作和其他任何東西,所以我得到的是一個呈現頁面的控件,但不允許用戶與瀏覽器進行交互(它們應該能夠與頁面交互) –

0
using mshtml; 

private mshtml.HTMLDocumentEvents2_Event documentEvents; 

在構造函數或XAML中設置您的LoadComplete事件:

webBrowser.LoadCompleted += webBrowser_LoadCompleted; 

然後在該方法中創建新的web瀏覽器的文檔對象,然後查看可用的屬性,並創建新的事件如下:

private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e) 
{ 
    documentEvents = (HTMLDocumentEvents2_Event)webBrowserChat.Document; // this will access the events properties as needed 
    documentEvents.oncontextmenu += webBrowserChat_ContextMenuOpening; 
} 

private bool webBrowserChat_ContextMenuOpening(IHTMLEventObj pEvtObj) 
{ 
    return false; // ContextMenu wont open 
    // return true; ContextMenu will open 
    // Here you can create your custom contextmenu or whatever you want 
} 
相關問題