C#学习笔记12:Winform网页操作-CefSharp内嵌浏览器

preview
共856个文件
cs:386个
pak:174个
h:118个
5星 · 超过95%的资源 需积分: 0 54 下载量 170 浏览量 更新于2024-05-10 收藏 560.63MB RAR 举报
在C#编程中,开发Windows桌面应用程序时,有时我们需要在应用程序内部嵌入一个浏览器控件,以便用户可以在不离开应用的情况下浏览网页。本篇学习笔记将聚焦于如何使用CefSharp库在Winform应用程序中实现这一功能。CefSharp是一个.NET封装的Chromium Embedded Framework(CEF),它允许开发者在他们的应用中嵌入一个功能完备的浏览器引擎。 我们需要安装CefSharp库。在Visual Studio中,可以通过NuGet包管理器来添加`CefSharp.WinForms`包。这将为我们的项目引入所需的CefSharp组件。 接下来,我们创建一个新的Winform窗体,并在窗体上添加一个名为` ChromiumWebBrowser `的控件。这个控件是CefSharp提供的,它实际上就是一个内置的浏览器。在设计视图中,可以通过拖放或在代码中手动创建: ```csharp var browser = new ChromiumWebBrowser("http://www.example.com"); this.Controls.Add(browser); ``` 这里的`http://www.example.com`是加载的初始网址。你可以根据需要替换为你想要加载的任何网页。 为了在运行时初始化CefSharp,需要在`Program.cs`的`Main`方法中添加以下代码: ```csharp CefSharpSettings.LegacyJavascriptBindingEnabled = true; Cef.Initialize(new CefSettings()); ``` 这会启动CEF框架并启用JavaScript的绑定,使我们能够与网页中的JavaScript进行交互。 然后,在窗体的加载事件中,我们可以确保浏览器在窗体显示时已经准备就绪: ```csharp private void Form1_Load(object sender, EventArgs e) { if (!Cef.IsInitialized) { Cef.Initialize(new CefSettings()); } // 设置浏览器窗口大小 browser.Dock = DockStyle.Fill; } ``` 在使用CefSharp时,我们还可以利用其丰富的API执行各种操作,如加载URL、执行JavaScript代码、处理导航事件等。例如,可以监听浏览器的加载完成事件: ```csharp browser.LoadingStateChanged += (sender, args) => { if (!args.IsLoading) { MessageBox.Show("页面已加载完毕"); } }; ``` 此外,CefSharp还支持注入自定义的JavaScript对象到网页上下文中,这样可以从C#代码中调用JavaScript函数: ```csharp public class MyBinder : IRenderProcessMessageHandler { public void OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, bool isRedirect, string url, RequestCallback callback) { } public void OnContextCreated(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame) { frame.RegisterJsObject("myBinder", this); } // 在这里定义要暴露给JavaScript的C#方法 public void CallFromJavaScript(string message) { MessageBox.Show($"从JavaScript收到消息:{message}"); } } // 在窗体构造函数中设置 browser.RegisterAsyncJsObject("myBinder", new MyBinder()); ``` 以上代码展示了如何创建一个JavaScript对象`myBinder`,并在网页中调用它的`CallFromJavaScript`方法。这为C#和JavaScript之间提供了双向通信的桥梁。 通过以上步骤,你已经成功地在Winform应用程序中集成了CefSharp内嵌浏览器。这个功能强大的控件不仅能够展示网页,还能实现更多高级功能,如页面交互、数据通信等。对于需要在桌面应用中嵌入网页功能的开发者来说,CefSharp是一个非常实用的工具。 为了更好地理解和实践,你可以下载提供的`WpfWithCefSharpDemo`工程,其中包含了完整的示例代码和运行环境,便于你进行测试和学习。通过实际操作,相信你会对CefSharp有更深入的理解。
身份认证 购VIP最低享 7 折!
30元优惠券
NULL指向我
  • 粉丝: 2978
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源