ChromiumWebBrowser禁用右键单击上下文菜单C#

jwd*_*y13 4 c# winforms

如何使用C#禁用Chromium Web浏览器中的右键单击上下文菜单?

在Chromium Embedded 3(DCEF3)中找到了这个禁用上下文菜单,但我不熟悉语法(我正在使用C#),而且我没有在名为OnBeforeContextMenu的CefSharp.WinForms.ChormiumWebBrowser类上看到一个事件.

mar*_*kru 13

我遇到了同样的问题,但由于接口IMenuHandler(重命名为IContextMenuHandler)已经有一些更改而且不再存在,因此无法再使用上述解决方案

bool OnBeforeContextMenu(IWebBrowser browser);
Run Code Online (Sandbox Code Playgroud)

现在有以下签名:

void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model);
Run Code Online (Sandbox Code Playgroud)

问题中链接的SO问题(在Chromium Embedded 3(DCEF3)中禁用上下文菜单)与pascal和inno设置脚本有关,但是为C#调整了接受的答案并ChromiumWebBrowser为我工作.解决方案是在执行中清除模型参数OnBeforeContextMenu.执行IContextMenuHandler可以看起来像这样:

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

    public bool OnContextMenuCommand(IWebBrowser browserControl, CefSharp.IBrowser browser, IFrame frame, IContextMenuParams parameters,
        CefMenuCommand commandId, CefEventFlags eventFlags)
    {
        return false;
    }

    public void OnContextMenuDismissed(IWebBrowser browserControl, CefSharp.IBrowser browser, IFrame frame)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在创建chrome Web浏览器对象的代码中:

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