zoukankan      html  css  js  c++  java
  • 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~

  • 相关阅读:
    C++中智能指针的设计和使用
    [转]C++ 智能指针详解
    C++ const 常量和常指针
    深入理解C++中的mutable关键字
    C++ 静态常量
    BZOJ 1875: [SDOI2009]HH去散步
    BZOJ 1024: [SCOI2009]生日快乐
    BZOJ 1059: [ZJOI2007]矩阵游戏
    bzoj 1833: [ZJOI2010]count 数字计数
    LUOGU P2587 [ZJOI2008]泡泡堂
  • 原文地址:https://www.cnblogs.com/yishilin/p/7743644.html
Copyright © 2011-2022 走看看