精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Winform 使用WebView2 開發現代應用

admin
2025年1月18日 14:54 本文熱度 359

WebView2 是 Microsoft 提供的一種嵌入式瀏覽器控件,基于 Edge (Chromium) 引擎。

它允許開發者將現代 Web 技術(如 HTML、CSS 和 JavaScript)與桌面應用相結合,從而構建強大、靈活的用戶界面。

本文將介紹 WebView2 的基本使用,并重點講解以下幾個重要功能:

  • NewWindowRequested
  • WebResourceResponseReceived
  • AddWebResourceRequestedFilter
  • WebResourceRequested

環境準備

  1. 安裝 WebView2 Runtime: WebView2 需要運行時支持,用戶設備必須安裝 WebView2 Runtime。如果未安裝,可以通過以下鏈接下載:https://go.microsoft.com/fwlink/p/?LinkId=2124703

  2. 引入必要的 NuGet 包: 在 Visual Studio 中,添加 Microsoft.Web.WebView2 NuGet 包。

  3. 初始化 WebView2: 創建 WebView2 控件并確保其已正確初始化。以下代碼檢查并安裝 WebView2 Runtime:

private static async Task<bool> InitializeWebView2(){    try    {        string version = CoreWebView2Environment.GetAvailableBrowserVersionString();        return !string.IsNullOrEmpty(version);    }    catch    {        // 引導用戶安裝 WebView2 Runtime        MessageBox.Show("WebView2 Runtime 未安裝。請安裝后重試。", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);        return false;    }}

創建 WebView2 控件

以下代碼展示了如何創建 WebView2 控件并初始化其核心功能:

public static async Task<WebView2> CreateWebView(){    if (!await InitializeWebView2())    {        return null;    }    WebView2 webView2 = new WebView2    {        Dock = DockStyle.Fill    };    await webView2.EnsureCoreWebView2Async(null);    // 注冊事件    webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;    webView2.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceived;    // 添加請求過濾器    webView2.CoreWebView2.AddWebResourceRequestedFilter("*://www.example.com/*", CoreWebView2WebResourceContext.Document);    webView2.CoreWebView2.WebResourceRequested += WebView2_WebResourceRequested;    return webView2;}

攔截新窗口請求:NewWindowRequested

默認情況下,WebView2 會嘗試在新窗口中打開彈出鏈接。通過 NewWindowRequested 事件,我們可以攔截彈窗行為并將新內容加載到當前窗口。

示例代碼:

private static void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e){    if (sender is CoreWebView2 webView)    {        e.Handled = true// 阻止默認彈窗行為        webView.Navigate(e.Uri); // 在當前 WebView2 中加載新頁面    }}

攔截和處理網絡響應:WebResourceResponseReceived

通過 WebResourceResponseReceived,我們可以查看并分析所有網絡響應。例如,可以記錄某些請求的響應時間或檢查響應頭信息。

示例代碼:

private static void CoreWebView2_WebResourceResponseReceived(object sender, CoreWebView2WebResourceResponseReceivedEventArgs e){    var uri = e.Request.Uri;    Console.WriteLine($"Response received for: {uri}");    e.Response.Headers.ToList().ForEach(header =>    {        Console.WriteLine($"Header: {header.Key} - {header.Value}");    });}

添加請求過濾器:AddWebResourceRequestedFilter

為了提高性能并精確控制,WebView2 提供了 AddWebResourceRequestedFilter 方法,用于定義需要監聽的請求類型和范圍。

使用方法:

webView.CoreWebView2.AddWebResourceRequestedFilter(    "*://www.example.com/*"// 目標 URL 模式    CoreWebView2WebResourceContext.Document // 資源類型:僅文檔);

攔截網絡請求:WebResourceRequested

通過 WebResourceRequested 事件,可以攔截網絡請求并進行處理,例如修改請求頭或阻止特定請求。

示例代碼:

private static async void WebView2_WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e){    var request = e.Request;    // 檢查是否有特定 Cookie    if (sender is CoreWebView2 webView)    {        var cookies = (await webView.CookieManager.GetCookiesAsync(request.Uri))                        .Where(c => c.Name == "SpecificCookie").ToList();        if (cookies.Any())        {            // 刪除特定 Cookie            cookies.ForEach(c => webView.CookieManager.DeleteCookie(c));        }    }    Console.WriteLine($"Request intercepted: {request.Uri}");}

總結

WebView2 是一個強大的控件,為開發者提供了豐富的功能來控制和定制 Web 資源的加載行為。通過本文介紹的事件和方法,你可以:

  • 阻止默認彈窗行為 (NewWindowRequested)
  • 分析網絡響應 (WebResourceResponseReceived)
  • 精確過濾需要攔截的請求 (AddWebResourceRequestedFilter)
  • 修改或阻止網絡請求 (WebResourceRequested)

借助這些功能,可以更靈活地將 Web 內容集成到桌面應用程序中,滿足各種業務需求。


閱讀原文:原文鏈接


該文章在 2025/1/18 18:17:44 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 性饥渴艳妇性色生活片在线播 | 亚洲av纯肉无码精品动漫 | 人妻在线a√公开视频 | 国产水蜜桃桃子约1k | 国产69精品久久久久APP下载 | 亚洲国产精品日韩一线满 | 亚洲国产精品自产拍在线观看 | 午夜黄色福利视频 | 99在线精品国自产拍 | 中国少妇内射xxxxⅹhd | 人妻精品久久久久中文字幕一冢本完整版在线观看 | 免费A级毛片做爰片在线 | 黑人巨茎大战俄罗斯美女 | 国产亚洲午夜精品a一区二区 | 免费成人在线电影 | 欧美日韩成人高清色视频 | 一区二区三区日韩高清 | 国产免费播放一区二区 | 亚洲亚洲午夜无码久久久久 | 亚洲av无码一区二区一二区 | 欧美精品国产制服第一页 | 欧美熟妇乱人伦A片免费高清 | 亚洲熟妇av一区二区三区 | 一级全黄60分钟免费网站 | 亚洲精品亚洲字幕 | 色-情-伦-理一区二区三区电影 | 久久无码中文字幕人妻 | 综合久久国产中文字幕 | 亚洲a∨无码一区二区猫咪 亚洲a∨无码一区二区 | 久久精品一区二区三区四区 | 爆乳护士一区二区三区在线播放 | 日韩一区二区A片免费观看 日韩一区二区超清视频 | 国语高清精品一区二区三区 | 亚洲国产成人精品无码区99最新章节 | 亚洲午夜成人网葡京 | 成人电影免费看 | 熟妇人妻va精品中文字幕欧美成人在线观看在线邻居的 | 国产三级永久在线观看 | 亚洲中文无码精品久久不卡 | 亚洲国产精品色情20252025 | 免费无码又爽又刺激软 |