我正在尝试通过webbrowser UIElement禁用PDF文件上的右键单击(井上下文菜单)。但无论它从未调用过所需的处理程序(与webbrowser加载通常的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");
}
从不打印“上下文菜单PDF”行。我也尝试使用MouseDown,但仍然保持不变。
编辑1:感谢MephestoKhaan,我设法通过webbrowser在Web上完成这项工作。对于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;
}
答案 0 :(得分:1)
嗯,MephestoKhaan是webbrowsers上的元素的正确方法(在它的例子中:webs)但是在通过Webbrowser与Acrobat Reader挣扎之后,我改为福昕阅读器。
使用Foxit我可以直接在首选项上禁用所有菜单和右键单击事件,并在全屏模式下打开它(不是webbrowser,而是另一个窗口)。这不是我要求的,但解决了我的问题(PDF查看器上没有上下文菜单)。
对于记录>如果你想在一个窗口上有按钮或一些自定义界面,可以使用Popup并将窗口设置为覆盖所有内容。
答案 1 :(得分:0)
试试这个:http://support.microsoft.com/?kbid=312777(从这里WPF WebBrowser Mouse Events not working as expected。似乎WPF本身没有管理控件,所以你必须将处理程序绑定到文档。