本文概述
- 1.创建一个自定义菜单处理程序
- 2.在浏览器上将自定义菜单处理程序设置为默认值
文章图片
尽管我们已经写过有关如何在CefSharp控件上的上下文菜单中添加新选项的信息, 但有时你只是想删除上下文菜单以防止应用程序出现任何问题。在本文中, 我们将向你介绍如何轻松实现它。
重要的提示 如果你在应用程序上使用自定义HTML / JavaScript / CSS上下文菜单, 则此代码段非常友好且有用, 因为基于HTML的上下文菜单(在JS应用程序上)仍然可以使用!
1.创建一个自定义菜单处理程序 在项目上创建一个名为MyCustomMenuHandler的新类(可以根据需要更改名称)。该类需要使用应用程序的名称空间并扩展IContextMenuHandler, 因此, 显然应该将CefSharp名称空间导入到你的类中。
该接口公开了以下显然需要声明的4个成员(甚至为空), 否则, 你将在代码” 未实现成员等” 上遇到异常:
using CefSharp;
public class MyCustomMenuHandler : 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;
}}
【如何防止本机上下文菜单出现在WinForms中的CefSharp控件上】一旦该类在你的项目中可用, 然后继续步骤2来注册你的自定义上下文菜单处理程序。
2.在浏览器上将自定义菜单处理程序设置为默认值 最后, 你只需要将ChromiumWebBrowser的MenuHandler属性的值设置为自定义菜单处理程序的新实例, 并且上下文菜单就不再出现。这可以在使用当前代码创建浏览器期间实现, 例如:
CefSettings settings = new CefSettings();
// Some settings if you have, here// Initialize cef with the provided settingsCef.Initialize(settings);
// Create a browser componentChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser("www.somewebsite or file.com");
// Register your Custom Menu Handler as defaultchromeBrowser.MenuHandler = new MyCustomMenuHandler();
// ...// Rest of your code// ...
如前所述, 如果你仍然希望你的应用程序具有自定义上下文菜单, 但是该菜单是使用JavaScript制作的(但不一定存在), 则此解决方案确实很棒。
编码愉快!
推荐阅读
- 如何在PHP中使用Imagick向图像添加水印
- 如何在WinForms应用程序中使用带有C#的Material Design控件
- 如何在C# WinForms应用程序中安装,配置和使用MetroFramework(样式化接口组件)
- 如何在WinForms中使用C#列出所有Windows进程及其属性(类似任务管理器)
- 如何在C#中的WinForms应用程序中实现Jint(JavaScript解释器)
- 如何在Symfony 3中将Markdown转换为HTML
- 使用C#在Winforms中创建扫描应用程序
- 无法与主机smtp.gmail.com(173.194.205.108)建立SwiftMailer连接[#0]
- centos7如何查看已有用户