使用cefsharp在winform中嵌套浏览器,解决程序闪退问题,你也可以做一个红芯浏览器^v^

使用cefsharp在winform中嵌套浏览器

简单使用cefsharp在winform中嵌套浏览器

在上一节,我们学习了如何简单地在winform中嵌入chromium浏览器,我在使用这个开发项目时,需要点击一个按钮,弹出嵌入浏览器的窗体,出现一个问题,就是第一次点击按钮可以正常打开浏览器,第二次点击就会出现卡壳,闪退问题。由于对于chromium这个庞大的程序不太了解,上网搜索相关文章解决了该问题:
就是在嵌入浏览器的窗体类中不能用Cef.shutdown();需要在调用的主窗体中才能调用Cef.shutdown();,贴一下代码吧:

主窗体代码:点击按钮会弹出嵌有浏览器的窗体
using CefSharp;
using System;
using System.Windows.Forms;

namespace SecondApp
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FrmSecond frmSecond = new FrmSecond();
            frmSecond.Show();
        }
		//在这最后是否Cef
        private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
            Environment.Exit(0);
        }
    }
}

//嵌入浏览器的窗体:
using CefSharp;
using CefSharp.WinForms;
using System;
using System.Windows.Forms;

namespace SecondApp
{
    public partial class FrmSecond : Form
    {
        public ChromiumWebBrowser chromeBrowser;
        public FrmSecond()
        {
            InitializeComponent();
        }
        private void FrmSecond_Load(object sender, EventArgs e)
        {
            // 创建浏览器控件
            chromeBrowser = new ChromiumWebBrowser("https://blog.csdn.net/xingkongtianyuzhao");
            // 将控件添加到窗体
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill;
        }
        //初始化浏览器并启动
        public void InitializeChromium()
        {
            try
            {
                CefSettings settings = new CefSettings();
                // 设置是否使用GPU
                settings.CefCommandLineArgs.Add("disable-gpu", "1");
                // 设置是否使用代理服务
                settings.CefCommandLineArgs.Add("no-proxy-server", "1");
                // 设置是否启动js交互,假如需要原生与js方法互调,则需要设置为true
                CefSharpSettings.LegacyJavascriptBindingEnabled = true;
                // 初始化cef
                Cef.Initialize(settings, true, browserProcessHandler: null);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //窗口关闭
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            chromeBrowser.CloseDevTools();//关闭浏览器调试工具
            //此方法会同时关闭窗口,我们真只可以直接调用该方法,同时关闭浏览器及窗口
            chromeBrowser.GetBrowser().CloseBrowser(true);//关闭浏览器
            //释放浏览器对象
            if (chromeBrowser != null && !chromeBrowser.Disposing)
            {
                chromeBrowser.Dispose();
            }
        }
    }
}

具体源码参考:

https://gitee.com/Alexander360/LearnCefsharp

参考资源链接:[CefSharp WinForm入门:坑爹的安装与配置](https://wenku.csdn.net/doc/1cpbek8zed?utm_source=wenku_answer2doc_content) 要将CefSharp组件嵌入WinForm应用程序并配置Chrome浏览器,首先需要理解CefSharp提供的浏览器组件库允许.NET开发者在WinForm和WPF应用直接使用Chrome浏览器的渲染引擎。以下是详细步骤,基于《CefSharp WinForm入门:坑爹的安装与配置》进行说明: 1. **准备开发环境**:确保你已经安装了Visual Studio 2013或VS2017,并且安装了.NET Framework 4.5.2或更高版本。 2. **安装NuGet包**:通过Visual Studio的NuGet包管理器安装CefSharp.WinForms包。在解决方案资源管理器,右键点击项目 -> 管理NuGet包 -> 浏览 -> 搜索CefSharp.WinForms -> 安装。这个过程会自动下载CefSharp及相关依赖项。 3. **配置项目平台**:根据目标运行环境选择x86或x64平台。在解决方案资源管理器,右键点击项目 -> 属性 -> 构建 -> 选择平台目标。 4. **添加浏览器控件**:在WinForm设计器添加CefSharp的ChromiumWebBrowser控件,这将作为网页内容的展示窗口。 5. **初始化和配置CefSharp**:在代码初始化CefSharp,并设置一些必要的参数,如是否显示滚动条、下载路径等。 6. **加载网页**:在ChromiumWebBrowser控件加载你希望展示的网页URL,并处理可能的异常或错误。 在完成这些步骤之后,你应该能在WinForm应用程序成功嵌入并配置Chrome浏览器。此外,为了避免遇到特定版本的兼容性问题,可以尝试不同的配置方案,并参考官方GitHub仓库的Wiki文档和示例代码。 一旦安装和配置成功,CefSharp提供了丰富的API供开发者调用,可以对浏览器进行多种控制,比如执行JavaScript、管理页面导航等。开发者在遇到问题时,也可以在官方Gitter交流讨论区寻求帮助。 通过以上步骤,你可以将CefSharp集成到你的WinForm应用程序,利用现代Web技术增强应用功能和用户体验。 参考资源链接:[CefSharp WinForm入门:坑爹的安装与配置](https://wenku.csdn.net/doc/1cpbek8zed?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值