C# 如何禁用WPF WebBrowser控件上的所有控件,而不是它显示的HTML页面
我正在进行一个项目,通过在WPF中显示一个包含map控件和WebBrowser控件中的所有JavaScript函数的HTML页面,将Google Maps JavaScript API V3引入WPF。然后,我在WebBrowser上使用InvokeScript来运行我编写的JavaScript函数,这样我就可以从C#使用JavaScript作为两者之间的桥梁来控制映射C# 如何禁用WPF WebBrowser控件上的所有控件,而不是它显示的HTML页面,c#,wpf,google-maps-api-3,webbrowser-control,C#,Wpf,Google Maps Api 3,Webbrowser Control,我正在进行一个项目,通过在WPF中显示一个包含map控件和WebBrowser控件中的所有JavaScript函数的HTML页面,将Google Maps JavaScript API V3引入WPF。然后,我在WebBrowser上使用InvokeScript来运行我编写的JavaScript函数,这样我就可以从C#使用JavaScript作为两者之间的桥梁来控制映射 这本身不是一个问题,而是一个要求。除了页面上的地图之外,我不希望用户对WebBrowser有任何控制。那么我怎样才能消除对它的
这本身不是一个问题,而是一个要求。除了页面上的地图之外,我不希望用户对WebBrowser有任何控制。那么我怎样才能消除对它的所有控制呢?从页面上的每个ContextMenu和任何文本到F5 refresh快捷方式,再到出现的要求启用功能或ActiveX的弹出窗口,所有内容都需要删除或至少得到支持,以便它们不做任何事情,我最终得到一个控件,该控件只呈现其HTML源代码,而用户除了页面上的内容之外,没有任何控制权(地图)。如果可能的话,我怎么做呢,谢谢。@HenryHunt,你是说禁用上下文菜单(右键单击选项)?然后在属性窗口中将IsWebBrowserContextMenuEnabled设置为False
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
}
在Extended WPF Toolkit@MayurDhingra中尝试使用busy indicator,它看起来像是一个通知,我想禁用WebBrowser上的所有控件,以便它只呈现用户可以交互的页面。此外,您还可以选择要禁用的选项,如“导航”、“快捷方式”等等,我使用的是WPF,所以这不是属性。我还需要删除F5刷新操作和其他任何操作,这样我得到的只是一个呈现页面的控件,但不允许用户与页面的浏览器部分交互(尽管他们应该能够与页面交互)