如何隐藏CefSharp.WinForms.ChromiumWebBrowser右键单击上下文菜单?

hub*_*pan 16 .net cefsharp

CefSharp.WinForms.ChromiumWebBrowser在我的项目中使用v45.当我右键单击Web浏览器时,将显示默认的上下文菜单:

对话图片

但我不想展示任何东西.我该怎么办?

小智 30

这是像我这样懒惰的人的实现.它基于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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用它

ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.MenuHandler = new CustomMenuHandler();
Run Code Online (Sandbox Code Playgroud)


小智 6

最简单的方法是设置事件 PreviewMouseRightButtonUp 和 PreviewMouseRightButtonDown 具有相同的功能 e.Handle = true。当您右键单击时,此解决方案不会显示 cefsharp 的上下文菜单。

XAML:

<wpf:ChromiumWebBrowser Grid.Row="1" x:Name="Browser" Margin="30,0" IsBrowserInitializedChanged="Browser_IsBrowserInitializedChanged" PreviewMouseRightButtonDown="Browser_PreviewMouseRightButton" PreviewMouseRightButtonUp="Browser_PreviewMouseRightButton"/>
Run Code Online (Sandbox Code Playgroud)

和功能:

private void Browser_PreviewMouseRightButton(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)


ama*_*and 4

如果你实现了,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项目演示了相当多的功能,如果您需要其他功能,请检查一下。