c#(CefSharp浏览器)dotnetbar2之SuperTabControl标签应用案例(3种方法控制)

网络笔记 同时被 2 个专栏收录
88 篇文章 1 订阅
44 篇文章 0 订阅

关于此组件使用方法不再过多描述

本博文:重点说明 在(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物联网远程控制(重点。有介绍见博文)--可以实现手机控制。。。绝对的好玩刺激,也是首创!

   

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

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值