Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何禁用WPF WebBrowser控件上的所有控件,而不是它显示的HTML页面_C#_Wpf_Google Maps Api 3_Webbrowser Control - Fatal编程技术网

C# 如何禁用WPF WebBrowser控件上的所有控件,而不是它显示的HTML页面

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有任何控制。那么我怎样才能消除对它的

我正在进行一个项目,通过在WPF中显示一个包含map控件和WebBrowser控件中的所有JavaScript函数的HTML页面,将Google Maps JavaScript API V3引入WPF。然后,我在WebBrowser上使用InvokeScript来运行我编写的JavaScript函数,这样我就可以从C#使用JavaScript作为两者之间的桥梁来控制映射


这本身不是一个问题,而是一个要求。除了页面上的地图之外,我不希望用户对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刷新操作和其他任何操作,这样我得到的只是一个呈现页面的控件,但不允许用户与页面的浏览器部分交互(尽管他们应该能够与页面交互)