Как отключить весь контроль над элементом управления WebBrowser WPF, но не отображаемую на нем HTML-страницу

Я работаю над проектом по внедрению API JavaScript V3 для Google Maps в WPF, отображая HTML-страницу, содержащую элемент управления картой и все функции JavaScript в элементе управления WebBrowser в WPF. Затем я использую InvokeScript в WebBrowser для запуска функций JavaScript, которые я написал, поэтому я могу по существу управлять картой с С#, используя JavaScript в качестве моста между ними.

Это не проблема как таковая, а требование. Я не хочу, чтобы у пользователя был какой-либо контроль над WebBrowser, кроме карты на странице. Итак, как я могу устранить все элементы управления? Все, что угодно, от каждого ContextMenu на странице и любого текста до ярлыка обновления F5 до всплывающих окон, которые появляются с просьбой включить функции или ActiveX, необходимо удалить или, по крайней мере, сжать, чтобы они ничего не делали, и я получаю элемент управления, который просто предоставляет свой HTML-источник, когда пользователь не имеет никакого контроля над чем-либо, кроме того, что находится на странице (карте). Как я могу это сделать, если это возможно, спасибо.

2 ответа

using mshtml;
private mshtml.HTMLDocumentEvents2_Event documentEvents;

в конструкторе или xaml установите событие LoadComplete:

webBrowser.LoadCompleted += webBrowser_LoadCompleted;

затем в этом методе создайте новый объект документа webbrowser и просмотрите доступные свойства и создайте новые события следующим образом:

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
}


@HenryHunt, вы имеете в виду отключить контекстное меню (щелкните правой кнопкой мыши)? Затем установите IsWebBrowserContextMenuEnabled' to 'False в окне "Свойства".

licensed under cc by-sa 3.0 with attribution.