ChromiumWebBrowser禁用右键单击关联菜单C#
如何使用C#禁用Chromium Web浏览器中的右键单击上下文菜单ChromiumWebBrowser禁用右键单击关联菜单C#,c#,winforms,C#,Winforms,如何使用C#禁用Chromium Web浏览器中的右键单击上下文菜单 我发现了这一点,但我不熟悉语法(我使用的是C),而且我在CefSharp.WinForms.ChormiumWebBrowser类上没有看到调用BeforeContextMenu的事件。好的,我能够解决这个问题。我的原始问题中引用的文章的问题是,它使用了铬嵌入式组件。我没有用那个。我正在使用网络浏览器。要隐藏右键单击上下文菜单,我在本文中找到了答案: 您只需定义一个实现IMenuHandler接口的类,然后将浏览器控件Menu
我发现了这一点,但我不熟悉语法(我使用的是C),而且我在CefSharp.WinForms.ChormiumWebBrowser类上没有看到调用BeforeContextMenu的事件。好的,我能够解决这个问题。我的原始问题中引用的文章的问题是,它使用了铬嵌入式组件。我没有用那个。我正在使用网络浏览器。要隐藏右键单击上下文菜单,我在本文中找到了答案: 您只需定义一个实现IMenuHandler接口的类,然后将浏览器控件MenuHandler属性设置为此类。最后,在类中的OnBeforeContextMenu方法中返回FALSE。下面是课堂:
public class CustomMenuHandler : IMenuHandler
{
public bool OnBeforeContextMenu(IWebBrowser browser)
{
return false;
}
}
接下来,将Chromium web浏览器的MenuHandler属性实例设置为此类:
var browser = new ChromiumWebBrowser(string.empty);
browser.MenuHandler = new CustomMenuHandler();
为我工作。我遇到了同样的问题,但由于接口
IMenuHandler
(重命名为IContextMenuHandler
)有一些更改,并且不再存在,因此无法再使用上述解决方案
bool OnBeforeContextMenu(IWebBrowser browser);
其签名如下:
void OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model);
问题()中链接的SO问题与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)
{
}
}
然后在创建chromium web浏览器对象的代码中:
browser = new ChromiumWebBrowser(url);
browser.MenuHandler = new CustomContextHandler();
这是一个过时的答案。在49版中不工作。我必须实现RunContextMenu,只返回false。在V67中对我来说很好。很好!乐意帮忙:)