在 C# 中使用 WebBrowser 控件時,如果你希望強制啟用最新的渲染模式(例如,使用最新的 Edge 瀏覽器的渲染引擎),你可以通過設置 Windows 注冊表中的 FEATURE_BROWSER_EMULATION 項來實現。這種方法可以幫助你確保 WebBrowser 控件使用最新的瀏覽器渲染引擎,這對于確保網頁的正確顯示和功能執行非常重要,尤其是在涉及到現代網頁技術(如 HTML5, CSS3, JavaScript ES6+ 等)時。
步驟 1: 確定目標 IE 版本
首先,你需要確定你的應用程序應該使用哪個版本的 IE 渲染引擎。例如,IE11 對應于 11000,而 Edge(基于 Chromium)的渲染引擎對應于 11001。
步驟 2: 修改注冊表
接下來,你需要修改 Windows 注冊表以設置 FEATURE_BROWSER_EMULATION 的值。你可以通過以下方式修改:
打開注冊表編輯器(按 Win + R,輸入 regedit,然后按 Enter)。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
或者對于所有用戶:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
在右側窗格中,創建一個新的 DWORD (32位) 值。
將此新值的名稱設置為你的應用程序的可執行文件名(例如,YourApp.exe)。
將此值的數值數據設置為所需的 IE 版本。例如,要使用 IE11 模式,設置為 11000;要使用 Edge 模式,設置為 11001。

也可以通過代碼直接修改注冊表:
void setIEVersion() {
string BROWSER_EMULATION_KEY = @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
// app.exe and app.vshost.exe
String appname = Process.GetCurrentProcess().ProcessName + ".exe";
// Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
const int browserEmulationMode = 11001;//Internet Explorer 11。網頁以IE 11的標準模式展現,頁面!DOCTYPE無效
RegistryKey browserEmulationKey = Registry.CurrentUser.OpenSubKey(BROWSER_EMULATION_KEY, RegistryKeyPermissionCheck.ReadWriteSubTree) ?? Registry.CurrentUser.CreateSubKey(BROWSER_EMULATION_KEY);
if (browserEmulationKey != null)
{
browserEmulationKey.SetValue(appname, browserEmulationMode, RegistryValueKind.DWord);
browserEmulationKey.Close();
}
}
步驟 3: 在 C# 中使用 WebBrowser 控件
在你的 C# 應用程序中,使用 WebBrowser 控件時,不需要做任何特殊的設置來啟用這個功能,因為注冊表修改已經指定了應該使用的 IE 版本。例如:
using System;
using System.Windows.Forms;
namespace WebBrowserExample
{
public class MainForm : Form
{
private WebBrowser webBrowser;
public MainForm()
{
webBrowser = new WebBrowser();
webBrowser.Dock = DockStyle.Fill;
this.Controls.Add(webBrowser);
webBrowser.Navigate("https://www.example.com");
}
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
注意:
使用 Edge 渲染模式時,請確保目標用戶的 Windows 版本支持 Edge(例如 Windows 10 或更高版本)。
對于某些特定的網頁或腳本,即使使用了最新的渲染模式,仍可能遇到兼容性問題。在這些情況下,考慮提供回退選項或使用其他瀏覽器控件(如 CefSharp)。
通過以上步驟,你應該能夠確保你的 WebBrowser 控件使用最新的渲染模式來顯示網頁內容。
該文章在 2025/2/13 14:46:03 編輯過