How to hide the context menu of CefSharp.WinForms.ChromiumWebBrowser?

I am using CefSharp.WinForms.ChromiumWebBrowserv45 in my project. When I right-click in a web browser, the default context menu appears:

dialog picture

But I do not want to show anything. What should I do?

+7
source share
4 answers

This is an implementation for lazy people like me. It is based on 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;
    }
}

How to use it

ChromiumWebBrowser browser = new ChromiumWebBrowser();
browser.MenuHandler = new CustomMenuHandler();
+19
source
+2
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;
}
0
source

The simplest way for you is to set the PreviewMouseRightButtonUp and PreviewMouseRightButtonDown events with the same function that has e.Handle = true. This solution will not display the cefsharp context menu when right-clicking.

XAML:

<wpf:ChromiumWebBrowser Grid.Row="1" x:Name="Browser" Margin="30,0" IsBrowserInitializedChanged="Browser_IsBrowserInitializedChanged" PreviewMouseRightButtonDown="Browser_PreviewMouseRightButton" PreviewMouseRightButtonUp="Browser_PreviewMouseRightButton"/>

And function:

private void Browser_PreviewMouseRightButton(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
}
0
source

Source: https://habr.com/ru/post/1619649/


All Articles