WinForms 內建 System.Windows.Forms.WebBrowser,封裝 IE/Edge (IE 模式) 渲染引擎。
public class SimpleBrowser : Form {
private WebBrowser wb = new WebBrowser { Dock = DockStyle.Fill };
private TextBox txtUrl = new TextBox { Dock = DockStyle.Top };
private Button btnGo = new Button { Text = "前往", Dock = DockStyle.Top };
public SimpleBrowser() {
Controls.Add(wb); Controls.Add(txtUrl); Controls.Add(btnGo);
btnGo.Click += (s,e) => wb.Navigate(txtUrl.Text);
wb.DocumentCompleted += (s,e) => txtUrl.Text = wb.Url?.ToString();
wb.Navigate("https://www.google.com");
}
}
| 現象 | 原因 | 對策 |
|---|---|---|
| 空白視窗、無內容 | 未呼叫 Navigate、或 URL 格式錯誤(缺 https://) | 確保 Navigate 完整 URL,預設載入首頁 |
| Script 錯誤彈窗 | 現代 JS (ES6+, fetch, Promise) IE 引擎不支援 | 注冊 HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION 設定 你的exe.exe = 11001 (IE11 模式) |
| HTTPS 憑證錯誤 | WebBrowser 不自動信任自簽憑證 | 測試環境忽略:實作 IServiceProvider + IHttpSecurity,或改用 CefSharp/WebView2 |
| 無法存取 DOM | DocumentCompleted 尚未觸發、或跨框架限制 | 在 DocumentCompleted 事件中操作 wb.Document |
Install-Package CefSharp.WinFormsInstall-Package Microsoft.Web.WebView2從 WebBrowser 起步理解基本架構,實務專案請直接採用 WebView2,避開 IE 相容性泥沼。