C# .NET WebBrowser控件-获取活动上下文菜单

C# .NET WebBrowser控件-获取活动上下文菜单,c#,browser,contextmenu,handle,C#,Browser,Contextmenu,Handle,我有WebBrowser控件,我想当右键被点击时,上下文菜单出现,以获得上下文菜单的句柄 有可能吗?有 您可以引用以下代码 //this code assumes WebBrowser object(_webBrowser) is already initiated //in class scope. //this method is needed to execute when form is loaded. //Register it to load eve

我有WebBrowser控件,我想当右键被点击时,上下文菜单出现,以获得上下文菜单的句柄

有可能吗?

您可以引用以下代码

    //this code assumes WebBrowser object(_webBrowser) is already initiated
    //in class scope.

    //this method is needed to execute when form is loaded.
    //Register it to load event
    private void Loaded(object sender, RoutedEventArgs e)
    {
        _webBrowser.LoadCompleted += _webBrowser_LoadCompleted;
    }

    private HTMLDocumentEvents2_Event _docEvent;

    private void _webBrowser_LoadCompleted(object sender, NavigationEventArgs e)
    {
        if (_docEvent != null)
        {
            _docEvent.oncontextmenu -= new HTMLDocumentEvents2_oncontextmenuEventHandler(_docEvent_oncontextmenu);
        }
        if (_webBrowser.Document != null)
        {
            _docEvent = (HTMLDocumentEvents2_Event)_webBrowser.Document;
            _docEvent.oncontextmenu += new HTMLDocumentEvents2_oncontextmenuEventHandler(_docEvent_oncontextmenu);
        }
    }

    bool _docEvent_oncontextmenu(IHTMLEventObj pEvtObj)
    {
        //do something and determine you want whether context menu shows or not
        //if you want to shows context menu, you'll need to return true.
        return true;
    }

如果您想显示自己的上下文菜单。我在这里发布了一个适用于winforms WebBrowser控件的解决方案:


此处错误:docEvent=(HTMLDocumentEvents2\u Event)\u webBrowser.Document;无法将类型“System.Windows.Forms.HtmlDocument”转换为“mshtml.HTMLDocumentEvents2\u EventOops!”!对不起,打扰了。我提到了WPF网络浏览器。在Winform WebBrowser,您可以使用_WebBrowser.Document.DomDocument。您需要在Winform intead中使用DocumentCompleted事件,在WPF中使用LoadCompleted事件。但是现在如何获取上下文菜单项?如果我也能回答这个问题,我将非常高兴。然而,访问上下文菜单并不容易,因为WinForm中WebBrowser的基础不是托管对象。