我最近将nuget的cefsharp添加到了visual studio的一个项目中。它正在使用浏览功能,但我需要我的用户能够通过右键单击复制快捷方式从浏览器复制他的电子邮件地址。
但是cefsharp只显示了4个选项 - 后退,前进,打印,查看源。没有复制快捷方式选项。
我没有使用任何设置初始化浏览器。刚刚创建了一个chromebrowser项目并将其添加到表单上的控件中。
有谁知道为什么会这样?我也尝试添加一个菜单项但不能这样做,因为我一直收到错误 - "你必须使用新的关键字"。浏览器中没有复制快捷方式,我可以通过代码调用。
有人可以帮助我并解释如何实现这一目标吗?如何为右键单击添加更多选项以及如何右键单击和复制链接地址。或者推荐一些其他浏览器组件?我尝试过awesomium,但有一半的网站没有加载它。
非常感谢。
答案 0 :(得分:3)
您可以通过实施IContextMenuHandler
来创建自己的上下文菜单。您没有指定是否使用WinForms
或WPF
版本,但GitHub上有大量示例。
WinForms
https://github.com/cefsharp/CefSharp/blob/master/CefSharp.WinForms.Example/Handlers/MenuHandler.cs
WPF
https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Wpf.Example/Handlers/MenuHandler.cs
对于这两种风格,您可以将IContextMenuHandler
实施分配到MenuHandler
的{{1}}属性。在这种情况下,我遵循GutHub ChromiumWebBrowser
示例并在名为WinForms
的类中实施IContextMenuHandler
。以下是MenuHandler
的示例,但可以轻松转换为WinForms
。
WPF
然后,只是将实例分配给internal class MenuHandler : IContextMenuHandler
{
private const int Copy = 26503;
void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)
{
//Add new custom menu items
model.AddItem((CefMenuCommand)Copy, "Copy Link Address");
}
bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)
{
if ((int)commandId == Copy)
{
//using System.Windows.Forms;
Clipboard.SetText(parameters.SourceUrl);
}
return false;
}
void IContextMenuHandler.OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{
}
bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)
{
return false;
}
}
的{{1}}属性
MenuHandler