2011-06-16 79 views

回答

1

是的。

您可以参考下面的代码。

//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; 
    } 
+0

错误的位置:docEvent =(HTMLDocumentEvents2_Event)_webBrowser.Document; 无法将类型'System.Windows.Forms.HtmlDocument'转换为'mshtml.HTMLDocumentEvents2_Event – TreantBG 2011-06-16 16:15:10

+0

糟糕!对不起,烦人。我提到了WPF WebBrowser。在Winform WebBrowser,你可以使用_webBrowser.Document.DomDocument。 – 2011-06-16 16:38:26

+0

您需要在WPF的LoadCompleted事件的WinForm intead中使用DocumentCompleted事件。 – 2011-06-16 16:47:46