0

我正在尝试通过网络浏览器 UIElement 禁用 PDF 文件上的右键单击(以及上下文菜单)。但无论它永远不会调用所需的处理程序(与加载普通 html 的网络浏览器的行为相同,但与其他 UIElements 不同)。

    public override UIElement Play()
    {
        base.Play();

        //It will be represented in a Webbrowser element
        WebBrowser element = new WebBrowser();

        element.ContextMenuOpening +=new ContextMenuEventHandler(element_ContextMenuOpening);

        //navigate to the current path of the file in the HDD, adding some parameters to avoid the Adobe Reader pannels to be shown
        element.Source = new Uri(path+"#toolbar=0&navpanes=0");
        return element;
    }

    public void element_ContextMenuOpening(Object obj, ContextMenuEventArgs e)
    {
        Console.WriteLine("CONTEXT MENU PDF");
    }

“CONTEXT MENU PDF”行从不打印。我也尝试过使用 MouseDown,但保持不变。

编辑 1:感谢 MephestoKhaan,我设法通过 webbrowser 与 Webs 一起工作。对于 PDF,它应该是类似的,我仍在寻找正确的类来将 Webbrowser.document 对象转换为。

    public override UIElement Play()
    {
        base.Play();

        //the element will be represented in a webbroser
        element = new WebBrowser();
        //load the web indicated by the path (url)
        element.NavigateToString(Path);
        element.Source = new Uri(Path);

        //disable context menu
        mshtml.HTMLDocumentEvents2_Event iEvent;
        iEvent = (mshtml.HTMLDocumentEvents2_Event) element.Document;
        iEvent.oncontextmenu += new mshtml.HTMLDocumentEvents2_oncontextmenuEventHandler(iEvent_oncontextmenu); 


        return element;
    }

    bool iEvent_oncontextmenu(mshtml.IHTMLEventObj e)
    {
        return false;
    }
4

2 回答 2

1

好吧,MephestoKhaan 是通过 webbrowsers 处理元素的正确方法(在它的示例中:webs),但是在通过 Webbrowser 与 Acrobat Reader 斗争之后,我改为 Foxit Reader。

使用 Foxit,我可以直接在首选项上禁用所有菜单和右键单击事件并全屏打开它(不是网络浏览器,而是不同的窗口)。这不完全是我要问的,但解决了我最深的问题(PDF 查看器上没有上下文菜单)。

对于记录>如果您想在窗口上有按钮或某些自定义界面,请使用弹出窗口并将窗口设置为覆盖所有内容。

于 2012-07-31T09:27:08.600 回答
0

试试这个: http: //support.microsoft.com/ ?kbid=312777 (从这里WPF WebBrowser Mouse Events not working as expected。似乎 WPF 本身不管理控件,所以你必须绑定处理程序到文档。

于 2012-07-26T20:22:38.590 回答