• Winfrom窗体应用程序___CefSharp的基础应用


    CefSharp在我的项目里最大的用处是使浏览器打开的页面再窗体打开 。

    这个问题是在用Web项目是iframe打开连接时遇到的,牵扯到不同域的问题,无法用iframe实现,故转成winfrom窗体程序。

    首先CefSharp可以在NeGet程序包下载;参考来自:easeyeah 的 CefSharp开源库的使用(一)

    初始化设置代码:

     1 private void Form1_Load(object sender, EventArgs e)
     2         {
     3 
     4             //初始化
     5             CefSharp.Cef.Initialize();
     6 
     7             //实例化
     8             wb = new ChromiumWebBrowser("http://www.baidu.com");
     9            //设置停靠方式
    10             wb.Dock = DockStyle.Fill;
    11 
    12             13 
    14             //wb.IWebBrowser = new IWebBrowser_();
    15             //加入到当前窗体中
    16             //this.Controls.Add(wb);
    17             groupBox1.Controls.Add(wb);
    18             
    19         }

    之后就可以显示网页了(注意  我是放在GroupBox中的)

    当然 这样并没有实现我之前的目的(不打开新标签)

    继续:

     1 using CefSharp;
     2 using CefSharp.WinForms;
     3 using System;
     4 using System.Collections.Generic;
     5 using System.Linq;
     6 using System.Text;
     7 using System.Threading.Tasks;
     8 
     9 namespace WindowsFormsApplication1
    10 {
    11     /// <summary>
    12     /// 在自己窗口打开链接
    13     /// </summary>
    14     internal class OpenPageSelf : ILifeSpanHandler
    15     {
    16         public bool DoClose(IWebBrowser browserControl, IBrowser browser)
    17         {
    18             return false;
    19         }
    20 
    21         public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
    22         {
    23 
    24         }
    25 
    26         public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
    27         {
    28 
    29         }
    30 
    31         public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
    32 string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
    33 IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
    34         {
    35             newBrowser = null;
    36             var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
    37             chromiumWebBrowser.Load(targetUrl);
    38             return true; //Return true to cancel the popup creation copyright by codebye.com.
    39         }
    40     }
    41 }
    OpenPageSelf

    OpenPageSelf 类继承ILifeSpanHandler接口  重写方法

    并在加载时候声明。

     1 private void Form1_Load(object sender, EventArgs e)
     2         {
     3 
     4             //必须进行初始化,否则就出来页面啦。
     5             CefSharp.Cef.Initialize();
     6 
     7             //实例化控件
     8             wb = new ChromiumWebBrowser("http://www.baidu.com");
     9             //设置停靠方式
    10             wb.Dock = DockStyle.Fill;
    11 
    12 
    13             wb.LifeSpanHandler = new OpenPageSelf();
    14 
    15 
    16             //wb.IWebBrowser = new IWebBrowser_();
    17             //加入到当前窗体中
    18             //this.Controls.Add(wb);
    19             groupBox1.Controls.Add(wb);
    20             
    21         }

    注意第十三行的那个 

    wb.LifeSpanHandler = new OpenPageSelf()

    以上即可实现。

    CefSharp简单使用Over~

  • 相关阅读:
    创业成功关键在于专注“核心竞争力”(外包有时候能大大提高开发周期)
    华为为什么不设事业部制?
    雷军三年花10亿造“芯” 营销还是“不服气”(外界对雷军做芯片的三种猜测,以及雷军本人的看法)
    Windows完成端口与猪肉佬
    分布式锁实现
    Quartz(GUI)图形界面程序----Quartz Web
    Quartz.net开源作业调度
    js 闭包
    Nancy
    MVC—WebAPI(调用、授权)
  • 原文地址:https://www.cnblogs.com/yishilin/p/7743644.html
Copyright © 2020-2023  润新知