关于此组件使用方法不再过多描述
本博文:重点说明 在(dotnetbar) SuperTabControl 做标签浏览器的使用心得。
翻阅资料实践后总结的关键点,以备查阅;重点OnBeforePopup 3种方法
public class CefSharpOpenPageSelf : ILifeSpanHandler
{
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
if (browser.IsDisposed || browser.IsPopup)
{
return false;
}
return true;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
//throw new NotImplementedException();
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
//throw new NotImplementedException();
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
try
{
//方法1:自身窗口中打开====================
if (!popnewwin)
{
var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
chromiumWebBrowser.Load(targetUrl);//自身加载此句起作用!!
newBrowser = null;
return true; //Return true to cancel the popup creation 取消弹出
}
//else
//{
// //方法2:弹出新窗口=========================
// newBrowser = null;
// return false;//弹出新窗口
//}
else
{
//方法3:新TAB中打开=======================
newBrowser = null;
superTabCtl.Invoke(new MethodInvoker(() =>
{
string stxt = "新页面..." + _NewTabId++;//显示默认文本
SuperTabItem tab = superTabCtl.CreateTab(stxt);//新建tab名称为 NewTabx
ChromiumWebBrowser wb = new ChromiumWebBrowser(targetUrl)
{
KeyboardHandler = new KeyBoardHander(),
//MenuHandler = new MenuHandler(),
DownloadHandler = new DownloadHandler(),
LifeSpanHandler = new CefSharpOpenPageSelf(),
Dock = DockStyle.Fill
};
wb.BrowserSettings = bset;
tab.Name = "tabitem_" + (_NewTabId - 1);//tab名称(保证唯一)
tab.Tag = targetUrl;// (_NewTabId - 1);//作为参照体唯一性
tab.Symbol = "\uf179";//f08b,f090,f0ca,f0cb,f17d,f170 (应用方式)
tab.SymbolSize = 12F;//图标大小
tab.CloseButtonVisible = true;//可关闭
tab.AttachedControl.Controls.Add(wb);//浏览器添加到panel
if (!tab.IsSelected)
superTabCtl.SelectedTab = tab;//选中最新建的tab ***
wb.Update();
//添加browser事件
wb.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(wb_FrameLoadEnd);//加载完成
wb.FrameLoadStart += new EventHandler<FrameLoadStartEventArgs>(wb_FrameLoadStart);//加载开始事件
wb.AddressChanged += popwb_AddressChanged;//地址????
wb.TitleChanged += wb_TitleChanged;//同步网页标题到tab.text(更新提示文本)
}));
return true;//alse以让CEF创建窗口非常重要。
}
}
catch (Exception ex){
newBrowser = null;
return false;
}
}
}
标签加个性小图标(从网页中自取未做实现)

二维码介绍见:https://jiuai.blog.csdn.net/article/details/117318539
现浏览器基本实现了大部分功能
截图,取色,大小写转换,源代码获取,文本筛选提取,一键导出PDF,开机自启动(不修改注册表)系统各种工具集成,常见网址导航,可双面浏览器显示(点击齿轮切换开关,注意调成非标签模式为佳),ie内核(简单集成,其他应用见相关博文介绍),可以换tab皮肤,可以换位置(四个方向 上 右 下 左),钟表插件,MQTT物联网远程控制(重点。有介绍见博文)--可以实现手机控制。。。绝对的好玩刺激,也是首创!




以前做过多款浏览器,这个功能最强,也是最满意的一次。

本文分享了如何在CefSharp中使用SuperTabControl实现标签浏览器,涉及OnBeforePopup方法的应用,以及个性化功能如小图标、新窗口打开和Tab管理。
226





