C# CefSharp-无复制快捷菜单项
我最近将nuget中的cefsharp添加到visual studio中的一个项目中。它的工作与浏览和所有,但我需要我的用户能够复制他的电子邮件地址从浏览器右键点击它点击复制快捷方式 但cefsharp只显示了4个选项-后退、前进、打印、查看源代码。没有复制快捷方式选项 我没有使用任何设置初始化浏览器。刚刚创建了一个chromiumbrowser项并将其添加到表单上的控件中 有人知道为什么会这样吗?我还试图添加一个菜单项,但无法做到这一点,因为我不断得到一个错误-“你必须使用新的关键字”。在浏览器中也并没有我可以通过代码调用的复制快捷方式方法C# CefSharp-无复制快捷菜单项,c#,vb.net,visual-studio-2010,chromium-embedded,cefsharp,C#,Vb.net,Visual Studio 2010,Chromium Embedded,Cefsharp,我最近将nuget中的cefsharp添加到visual studio中的一个项目中。它的工作与浏览和所有,但我需要我的用户能够复制他的电子邮件地址从浏览器右键点击它点击复制快捷方式 但cefsharp只显示了4个选项-后退、前进、打印、查看源代码。没有复制快捷方式选项 我没有使用任何设置初始化浏览器。刚刚创建了一个chromiumbrowser项并将其添加到表单上的控件中 有人知道为什么会这样吗?我还试图添加一个菜单项,但无法做到这一点,因为我不断得到一个错误-“你必须使用新的关键字”。在浏览
有人能帮我解释一下如何做到这一点吗?如何为右键单击添加更多选项,以及如何右键单击和复制链接地址。或者向我推荐其他浏览器组件?我尝试过awesomium,但有一半的网站没有加载。您可以通过实现
IContextMenuHandler
来创建自己的上下文菜单。您没有指定您使用的是WinForms
还是WPF
版本,但GitHub上有大量的示例说明这两种版本
WinForms
WPF
对于任何一种口味,都可以将IContextMenuHandler
实现分配给ChromiumWebBrowser
的MenuHandler
属性。在本例中,我遵循GutHubWinForms
示例,并在名为MenuHandler
的类中实现了IContextMenuHandler
。下面是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;
}
}
然后,将实例分配给ChromiumWebBrowser
browser.MenuHandler = new MenuHandler();
通过实现
IContextMenuHandler
,您可以创建自己的上下文菜单。您没有指定您使用的是WinForms
还是WPF
版本,但GitHub上有大量的示例说明这两种版本
WinForms
WPF
对于任何一种口味,都可以将IContextMenuHandler
实现分配给ChromiumWebBrowser
的MenuHandler
属性。在本例中,我遵循GutHubWinForms
示例,并在名为MenuHandler
的类中实现了IContextMenuHandler
。下面是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;
}
}
然后,将实例分配给ChromiumWebBrowser
browser.MenuHandler = new MenuHandler();
谢谢。工作很有魅力。本应搜索github,但不知道如何浏览其分区。不管怎样,对于其他人,我将sourceurl更改为linkurl,因为这正是我所需要的。parameters.LinkUrl对我有用。啊,我不确定它是
LinkUrl
还是SourceUrl
,我把它记下来了。很高兴这有帮助。:-)谢谢。工作很有魅力。本应搜索github,但不知道如何浏览其分区。不管怎样,对于其他人,我将sourceurl更改为linkurl,因为这正是我所需要的。parameters.LinkUrl对我有用。啊,我不确定它是LinkUrl
还是SourceUrl
,我把它记下来了。很高兴这有帮助。:-)