我使用EventHandler来抑制AxWebBrowser上的上下文菜单。我使用下面的代码:
public class HtmlEditor : System.Windows.Forms.UserControl
{
...
...
private AxSHDocVw.AxWebBrowser axWebBrowser1;
...
...
public HtmlEditor()
{
InitializeComponent();
axWebBrowser1.DocumentComplete +=new AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(axWebBrowser1_DocumentComplete);
axWebBrowser1.Navigate("about:blank");
axWebBrowser1.BeforeNavigate2 +=new AxSHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(axWebBrowser1_BeforeNavigate2);
mshtml.HTMLDocumentClass doc = (mshtml.HTMLDocumentClass)this.axWebBrowser1.Document;///stop here
doc.designMode = "On"; // This turns the control into an editor ///stop here
((mshtml.HTMLDocumentEvents2_Event)this.axWebBrowser1.Document).oncontextmenu += new mshtml.HTMLDocumentEvents2_oncontextmenuEventHandler(HtmlEditor_oncontextmenu); //suppress context menu ///stop here
Dirty = false;///stop here
}
private bool HtmlEditor_oncontextmenu(mshtml.IHTMLEventObj e)
{
return false;
}
...
...
}
有四行评论“///在此处停止”。如果我在这些行中的任何一行设置断点,运行应用程序,然后在我停在该行后继续,然后右键单击该控件时不会出现上下文菜单。但是,如果我在其他任何地方放置断点并执行相同操作,则会出现上下文菜单。此外,如果我在没有断点的情况下运行应用程序,则会出现上下文菜单。
我还尝试在一个单独的方法中分配EventHandler,在完成上述所有操作后调用long,但同样会出现上下文菜单。
任何人都知道如何解决我的问题?
答案 0 :(得分:0)
您应该使用WinForms WebBrowser control并将其IsWebBrowserContextMenuEnabled属性设置为false。
您可以使用其Document.DomDocument获取原始MSHTML HTMLDocument对象。