C# WebBrowser控件-防止右键单击

C# WebBrowser控件-防止右键单击,c#,reporting-services,browser,webbrowser-control,C#,Reporting Services,Browser,Webbrowser Control,在我的应用程序中,我有一个表单,其中包含一个浏览器控件,我在其中显示SSRS报告。我希望防止用户在浏览器控件中单击鼠标右键并显示弹出菜单。理想情况下,我希望右键单击什么都不做。有什么方法可以做到这一点吗?将IsWebBrowserContextMenuEnabled属性设置为false您可以将IsWebBrowserContextMenuEnabled设置为false。您可能还希望将AllowWebBrowserDrop设置为false,这样他们就不能将url拖到应用程序中并加载它

在我的应用程序中,我有一个表单,其中包含一个浏览器控件,我在其中显示SSRS报告。我希望防止用户在浏览器控件中单击鼠标右键并显示弹出菜单。理想情况下,我希望右键单击什么都不做。有什么方法可以做到这一点吗?

将IsWebBrowserContextMenuEnabled属性设置为
false

您可以将IsWebBrowserContextMenuEnabled设置为false。您可能还希望将AllowWebBrowserDrop设置为false,这样他们就不能将url拖到应用程序中并加载它

        webBrowser1.IsWebBrowserContextMenuEnabled = false;
        webBrowser1.AllowWebBrowserDrop = false;
对于WPF==>


wbBrowser.ContextMenu.IsEnabled=false

对于任何情况,winform或wpf:

     private void WebBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            ((WebBrowser)sender).InvokeScript("eval", "$(document).contextmenu(function() {    return false;        });");
}

我有一个关于我的项目的解决方案(WPF-MVVM):

重要添加参考:Microsoft.mshtml

实施事件:webBrowser.LoadCompleted+=webBrowser_LoadCompleted

using mshtml;

private void webBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    object doc = webBrowser.Document;
    HTMLDocumentEvents2_Event evn2 = doc as HTMLDocumentEvents2_Event;
    HTMLDocumentEvents_Event evn = doc as HTMLDocumentEvents_Event;
    evn.oncontextmenu += new HTMLDocumentEvents_oncontextmenuEventHandler(Evn_oncontextmenu);
    evn2.oncontextmenu += new HTMLDocumentEvents2_oncontextmenuEventHandler(Evn2_oncontextmenu);
}

private bool Evn2_oncontextmenu(IHTMLEventObj pEvtObj)
{
    return false;
}

private bool Evn_oncontextmenu()
{
    return false;
}

希望对您有所帮助。

这是windows窗体还是WPF?这是WebBrowser控件还是报表控件?如果您实现了浏览器控件,只是为了在SSRS web控件中显示报表,为什么不在这种情况下使用Windows报表控件并避免使用浏览器控件(如果是这样的话)!适用于Winforms WebBrowser,而不是WPF版本。WPF版本似乎主要功能不足。我个人几乎每次都通过WindowsFormsHost控件使用Forms的WebBrowser。@Kaganar这种方法唯一的问题是,HTML呈现程序的功能仅限于IE 5/6级,除非你设置了注册表实体,让IE在你的应用程序插入ieframe.dll时使用更高版本,比如10/11。这是最好的答案,因为当自定义控件中包含WebBrowser(WPF)时,最优雅的一个()有问题(至少我经历过崩溃)。需要jQuery think.works完美,无需对加载的页面或应用程序自己的设计或注册表进行任何更改:)仅当您首先分配ContextMenu时,此选项才有效,否则默认为null。问题是如何防止上下文菜单出现在显示的网页上,而不是这个WPF上下文菜单。