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~

  • 相关阅读:
    selenium执行js代码的两个方法
    PostgresSQL数据库安装及操作
    [Python]requests使用代理
    linux下postgreSQL初始化设置方法
    如何用Jenkins自动化部署项目(教程,从零到搭建完成)
    Python笔记:Geopython GIS相关库
    Postman接口&压力测试
    python+django+vue实现前后端分离项目和部署的操作
    python-Django-1.8.2中文文档
    CSS详细解读定位
  • 原文地址:https://www.cnblogs.com/yishilin/p/7743644.html
Copyright © 2011-2022 走看看