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~

  • 相关阅读:
    ASP.NET 2.0 中动态添加 GridView 模板列的例子
    ASP操作Excel技术总结
    JS实现下拉列表效果
    发布无限制版CodePlusV2.0(转载)
    SQL行列转换(转载)
    [转]详解C中volatile关键字
    [转]68013开发笔记之一
    清除计算机占用串口
    modelsim保存仿真波形
    SQL存储过程分页算法研究(支持千万级) 转
  • 原文地址:https://www.cnblogs.com/yishilin/p/7743644.html
Copyright © 2011-2022 走看看