Visual Studio 2019 集成CefSharp[通俗易懂]

Visual Studio 2019 集成CefSharp[通俗易懂]1.点击“引用”,右键”管理Nuget程序包”,搜索框里输入”CefSharp”,选择”CefSharp.WinForms”,安装。这样就会自动把CefSharp需要的拓展给安装齐全了,之后在解决方案的packages目录里会有4个文件夹cef.redist.x64.版本号,cef.redist.x86.版本号,CefSharp.Common.版本号,CefSharp.WinForms.版本号。2.使用代码:usingCefSharp.WinForms;usingMicrosoft

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.点击“引用”,右键”管理Nuget程序包”,搜索框里输入”CefSharp”,选择”CefSharp.WinForms”,安装。

Visual Studio 2019 集成CefSharp[通俗易懂]

 这样就会自动把CefSharp需要的拓展给安装齐全了,之后在解决方案的 packages 目录里会有4个文件夹 cef.redist.x64.版本号,cef.redist.x86.版本号,CefSharp.Common.版本号,CefSharp.WinForms.版本号。

2.使用代码:

using CefSharp.WinForms;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
using ZKKC.Lib;

namespace Wb
{
    public partial class FormMain : Form
    {
        private CefSharp.WinForms.ChromiumWebBrowser wb_main;
        delegate void SetWebBrowserVisible(Boolean result);

        public FormMain()
        {
            InitializeComponent();

        }

        /// <summary>
        /// 初始化WebBrowser
        /// </summary>
        public void InitWb()
        {

            String url = "https://ie.icoa.cn/";

            this.wb_main = new CefSharp.WinForms.ChromiumWebBrowser(url);
            this.wb_main.ActivateBrowserOnCreation = false;
            this.wb_main.Dock = System.Windows.Forms.DockStyle.Fill;
            this.wb_main.Location = new System.Drawing.Point(0, 0);
            this.wb_main.Name = "wb_main";
            this.wb_main.Size = new System.Drawing.Size(800, 450);
            this.wb_main.TabIndex = 0;
            this.wb_main.FrameLoadStart += new System.EventHandler<CefSharp.FrameLoadStartEventArgs>(this.wb_main_FrameLoadStart);
            this.wb_main.FrameLoadEnd += new System.EventHandler<CefSharp.FrameLoadEndEventArgs>(this.wb_main_FrameLoadEnd);
            this.pl_main.Controls.Add(this.wb_main);

            try
            {
                this.toToggleWbVisible(false);  //直接设置Visible=false,会导致浏览器不会访问地址,所以在访问底之前手动设置为不可见
                this.wb_main.Load(url);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw e;
            }
        }
        
        private void FormMain_Load(object sender, EventArgs e)
        {
            //初始化WebBrowser
            InitWb();
        }
        
        /// <summary>
        /// 修改浏览器插件的可见性
        /// </summary>
        /// <param name="result"></param>
        private void toToggleWbVisible(Boolean result)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (this.wb_main.InvokeRequired)
            {
                SetWebBrowserVisible d = new SetWebBrowserVisible(toToggleWbVisible);
                this.Invoke(d, new object[] { result });
            }
            else
            {
                this.wb_main.Visible = result;
            }
        }

        /// <summary>
        /// 浏览器开始加载事件把浏览器设置为不可见
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void wb_main_FrameLoadStart(object sender, CefSharp.FrameLoadStartEventArgs e)
        {
            //刷新 about:blank 页面时不隐藏控件
            if (!e.Url.Equals("about:blank"))
            {
                this.toToggleWbVisible(false);
            }
        }

        /// <summary>
        /// 浏览器结束加载事件把浏览器设置为可见
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void wb_main_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
        {
            this.toToggleWbVisible(true);
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192800.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ETL的基础知识,看完你就全明白了!「建议收藏」

    ETL的基础知识,看完你就全明白了!「建议收藏」深度解析了ETL的基础概念以及实现方案,很值得一看~

  • android之Display.getRotation()_传感器控制屏幕旋转

    在看android自带的samples源码里面的AccelerometerPlayActivity时,看到下面这段代码,很不理解public void onSensorChanged(SensorEvent event) { if(event.sensor.getType() != Sensor.TYPE_ACCELEROMETER){ return; } switch (m

  • python编程100例_python典型异常

    python编程100例_python典型异常异常模块下面介绍python常用的异常模块AttributeError异常AttributeError试图访问一个类中不存在的成员(包括:成员变量、属性和成员方法)而引发的异常Attribut

  • Linux配置Java环境变量 详解「建议收藏」

    Linux配置Java环境变量 详解「建议收藏」一、官网下载JDKJDK官方下载地址:https://www.oracle.com/cn/java/technologies/javase-downloads.html​ 打开此网址可以看到目前所有维护中的JDK的发行版本,在此找到你需要的版本即可,我们这里选择JDK1.8版本进行演示。​ 下拉找到JavaSE8标题,然后点击JDKDownload,将跳转至JDK8版本选择页面。​ 选择合适安装包进行点击下载。所有JDK版本的历史版本:https://www.oracle.com/j

  • 测试用例等价类和边界值_等价类划分和边界值的区别与联系

    测试用例等价类和边界值_等价类划分和边界值的区别与联系一、测试用例/案例(testcase/testinstance)  1、定义:是在测试执行之前,由测试人员编写的指导测试过程的重要文档,主要包括:用例编号、测试目的、测试步骤(用例描述),预期结果  2、介绍编写测试用例的7种方法:    1)等价类划分法()    2)边界值法()    3)因果图法    4)判定表法    5)正交排列法    6)测试大纲法    7)场景法(*****)  至少要掌握每种方法的适用场合(用在哪)和使用步骤(怎么用)  编写测试用例可以参考

    2022年10月10日
  • phpstorm2021永久激活码【2021最新】

    (phpstorm2021永久激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号