2015-12-12 162 views
4

我在我的项目中使用CefSharp.WinForms.ChromiumWebBrowser v45。当我右键点击进入网页浏览器,默认的上下文菜单会显示:如何隐藏CefSharp.WinForms.ChromiumWebBrowser右键单击上下文菜单?

dialog picture

但我不想显示任何东西。我该怎么办?

+0

请出示了一些研究工作,并告诉我们你已经想到 –

+0

我希望我的软件用户没有知道这个上下文菜单是否存在。但是当他们在webbrowser上选择了一些文本,并且右键单击时,他们可以使用“复制”上下文菜单。我只禁用页面默认的右键菜单。 – hubpan

回答

2

如果您实施IContextMenuHandler,则可以控制ContextMenu。下面的两个链接演示了需要什么(以及一些其他有用的功能)。

https://github.com/cefsharp/CefSharp/blob/935d3900ba2147f4786386596b62339087ff61b0/CefSharp.WinForms.Example/Handlers/MenuHandler.cs#L15

https://github.com/cefsharp/CefSharp/blob/c18f951a97a515df112d67775c767d4222f88c23/CefSharp.WinForms.Example/BrowserTabUserControl.cs#L31

一般来说,CefSharp.WinForms.Example项目演示了不少功能,检查出来,如果你需要其他的功能。

+0

非常感谢! – hubpan

11

这是像我这样懒惰的人的实现代码。它是基于CefSharp v53.0.0

public class CustomMenuHandler : CefSharp.IContextMenuHandler 
{ 
    public void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) 
    { 
     model.Clear(); 
    } 

    public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) 
    { 

     return false; 
    } 

    public void OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame) 
    { 

    } 

    public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) 
    { 
     return false; 
    } 
} 

如何使用它

ChromiumWebBrowser browser = new ChromiumWebBrowser(); 
browser.MenuHandler = new CustomMenuHandler(); 
+0

伟大的想法 - 我想提高该 1.根据需要创建新的CS文件:CustomMenuHandler.cs 2.写完整CustomMenuHandler 3.保存它! 4. chromeBrowser.menuHandler = new CustomMenuHandler(); 仍然与v53.0.1一起工作耶! – SourceSkyBoxer

1
webBrowser.PreviewMouseRightButtonDown += HandleWebBrowserPreviewMouseRightButton; 
webBrowser.PreviewMouseRightButtonUp += HandleWebBrowserPreviewMouseRightButton; 

private void HandleWebBrowserPreviewMouseRightButton(object sender, MouseButtonEventArgs e) { 
      // Preventing right-click until https://github.com/cefsharp/CefSharp/issues/1915 is fixed 
      e.Handled = true; 
} 
相关问题