Подавить контекстное меню в объекте AxWebBrowser - проблема синхронизации? - PullRequest
0 голосов
/ 01 октября 2009

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

У кого-нибудь есть идеи, как я могу понять мою проблему?

1 Ответ

0 голосов
/ 01 октября 2009

Вы должны использовать элемент управления WinForms WebBrowser и установить для его свойства IsWebBrowserContextMenuEnabled значение false.

Вы можете использовать его Document.DomDocument для получения необработанного объекта MSHTML HTMLDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...