Я использую 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 в отдельном методе, вызываемом после выполнения всего вышеперечисленного, но снова появляется контекстное меню.
У кого-нибудь есть идеи, как я могу понять мою проблему?