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);
        }
    }
}

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

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

(0)
上一篇 2025年12月7日 下午11:22
下一篇 2025年12月8日 上午7:01


相关推荐

  • Java菜鸟教程 递归算法与Scanner类「建议收藏」

    Java菜鸟教程 递归算法与Scanner类「建议收藏」最近笔者学习了递归算法与Scanner类的简单应用,在此做一些分享。递归算法:Recursion是一种解决问题的方法,就是把问题逐渐简单化。遵循“自己调用自己”的基本思想。运用递归算法解决问题的时候,要注意定义递归头,即什么时候不调用自身的方法;以及定义递归体:什么时候要调用自身的方法。可以用ifelse语句来控制,形成一个循环。以下是几个例子。staticinta=0;pu

    2022年5月3日
    53
  • 逢七过小游戏「建议收藏」

    逢七过小游戏「建议收藏」exercise逢七过的游戏逢七过的游戏。(1-100)游戏规则:123….6过8910111213过1516过1819……遇到7的倍数或者个位数上是7

    2022年8月6日
    9
  • linux top命令 详解「建议收藏」

    linux top命令 详解「建议收藏」top命令主要用来观察和收集运行在系统上的进程的一些有用信息。ps只是一个快照,是ps命令执行的那一瞬间的系统中进程的快照。top则可以用于持续观察。第一步,在命令行键入top,回车进入top管理界面。第一行其实和uptime的执行效果是一样的。分析一下,12:48:06是当前运行这个命令的时候,机器的时间。up134days,19:36,指的是说这台机器,持续运行了134天了,启动于134天前的19:36。5users代表的是当前运行这个命令的时候,这台机器上总共登陆有5个用

    2026年3月5日
    5
  • 推荐一个宝藏博主,让你搞懂Transformer、BERT、GPT!

    推荐一个宝藏博主,让你搞懂Transformer、BERT、GPT!

    2026年3月16日
    2
  • java406错误_Java项目部署遇到406错误[通俗易懂]

    1、406错误发生406错误的原因是服务器传递回来的值客户端无法解析。通过在谷歌浏览器的开发浏览器查看代码,发现RequestHeader的Accept格式为application/json格式,而服务器传回的报文中ResponseHeader的格式却为text/html,导致js解析不了数据,报406错误。因此,我们需要将服务器的数据先转换成json,再将其以application/json的C…

    2022年4月8日
    55
  • 《Getting Started with WebRTC》第一章 WebRTC介绍

    《Getting Started with WebRTC》第一章 WebRTC介绍

    2022年1月22日
    478

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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