Делаю свой браузер (без наворотов), единственное условие - открытие ссылок в новой вкладке.
Задал вопрос на общем форуме cefsharp - отправили по ссылке: , там много примеров - пытался скомпилить, много ошибок и прочего. Пошел по другому пути: нашел исходный код SharpBrowser - распаковал папку bin, там полностью рабочий проект и в нем есть реализация открытия ссылки в новой вкладке.
Файл называется: ContextMenuHandlers.cs
private const int OpenLinkInNewTab = 26507;
......
//Removing existing menu item
//bool removed = model.Remove(CefMenuCommand.ViewSource); // Remove "View Source" option
if (parameters.LinkUrl != "") {
model.AddItem((CefMenuCommand)OpenLinkInNewTab, "Open link in new tab");
model.AddItem((CefMenuCommand)CopyLinkAddress, "Copy link");
model.AddSeparator();
}
......
И реализация в методе:
public bool OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags) {
if (id == OpenLinkInNewTab) {
ChromiumWebBrowser newBrowser = myForm.AddNewBrowserTab(parameters.LinkUrl, false, browser.MainFrame.Url);
}}
Добавил к себе, получаю ошибку:
Severity Code Description Project File Line Suppression State
Error CS1061 'Form1' does not contain a definition for 'AddNewBrowserTab' and no accessible extension method 'AddNewBrowserTab' accepting a first argument of type 'Form1' could be found (are you missing a using directive or an assembly reference?) AGO h:\РАЗЛИЧНЫЕ ПРОЕКТЫ\C#\MyCustomMenuHandler.cs 72 Active
Что такое AddNewBrowserTab? Добавил обычные ControlTab, но не сработало. Как исправить?
Скажу так, что мой проект полностью компилится и отображает страницы, т.е. даже такой код в методе выше работает:
// React to the first ID (show dev tools method)
if (commandId == (CefMenuCommand)26501)
{
browser.GetHost().ShowDevTools();
return true;
}
Нашел еще в исходниках папку с BrowserTabStrip - если этот компонент надо использовать, то как его подключить к проекту?