我遇到了相同的问题,但上述解决方案已经无法使用,因为接口IMenuHandler
(重命名为IContextMenuHandler
)有一些更改,且不再存在。
bool OnBeforeContextMenu(IWebBrowser browser)
现在的签名如下:
void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model);
问题中链接的SO问题(禁用Chromium Embedded 3(DCEF3)中的上下文菜单)与Pascal和Inno Setup脚本有关,但接受的答案已经适用于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)
{
}
}
然后在创建Chromium网络浏览器对象的代码中:
browser = new ChromiumWebBrowser(url);
browser.MenuHandler = new CustomContextHandler();