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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 都能看懂的LIS(最长上升子序列)问题[通俗易懂]

    都能看懂的LIS(最长上升子序列)问题[通俗易懂]LIS问题介绍:首先来说一下什么是LIS问题:有一个长为n的数列a0,a1,……,a(n-1)。请求出这个序列中最长的上升子序列的长度。上升子序列指的是对于任意的i<j都满足ai<aj的子序列,该问题被称为最长上升子序列(LIS,LongestIncreasingSubsequence)的著名问题。举个栗子:给你一个序列为(1,5,2,6,9,1…

    2022年6月14日
    29
  • 1191 家谱树(拓扑排序)

    1191 家谱树(拓扑排序)1 问题描述 有个人的家族很大 辈分关系很混乱 请你帮整理一下这种关系 给出每个人的孩子的信息 输出一个序列 使得每个人的孩子都比那个人后列出 输入格式第 1 行一个整数 n 表示家族的人数 接下来 n 行 第 i 行描述第 i 个人的孩子 每行最后是 0 表示描述完毕 每个人的编号从 1 到 n 输出格式输出一个序列 使得每个人的孩子都比那个人后列出 数据保证一定有解 如果有多解输出任意一解 数据范围 1 n 100 输入样例

    2025年9月7日
    3
  • 经典汉罗塔问题解决方案[通俗易懂]

    经典汉罗塔问题解决方案[通俗易懂]汉罗塔问题将a的盘子移动到c针且一次只能移动一个盘,在移动过程中必须保持大盘在下,小盘在上。1、将n-1个盘子从a移动到b盘2、将a剩下的一个盘子移动到c盘3、将b的n-1个盘子移动到c盘#include<iostream>usingnamespacestd;voidmove1(chara,charc){ cout<<a<<“–>”<<c<<endl;}voidhanoi(intn,

    2022年8月31日
    5
  • 用JAVA写一个冒泡排序「建议收藏」

    用JAVA写一个冒泡排序「建议收藏」一:实现思想:  基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。二:实现代码:1packagebulubulu;23publicclassMaopao{4…

    2022年7月8日
    24
  • Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]

    Pytest(18)pytest接口自动化完整框架思维导图[通俗易懂]pytest接口自动化完整框架思维导图

    2022年7月28日
    7
  • java是前端还是后端 对于java来讲那个以后发展的会更好

    java是前端还是后端 对于java来讲那个以后发展的会更好Java和前端很多的初学者都不知道该怎么去选择。本来对于java区分前端还是后端这个问题问的其实并没有什么技术含量,java本身来讲涉及的后端的知识要远远多于前端,当然java也有前端的知识javaweb就是啦,但是个人感觉如果你想学习java还是后端更好。第一后端就像一棵大树,你沿着一根树枝,可以慢慢地了解整个企业应用开发技术这个大树,而你的技术水平会越来越深入。第二前端一直以来就是界面,技术深度不够,随着你经验的丰富,你的技术水平会越来越熟练。所以前端和后端在技术上的区别就是一个趋向熟练,一个趋

    2022年7月8日
    18

发表回复

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

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