首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

WebBrowser 控件:HTML 元素事件觸發 WinForms 事件的標準做法

     編輯:關於C#

核心概念

WebBrowser.Document 完成載入後,可透過 HtmlElement 取得 DOM 節點,並直接以 += 訂閱其 CLR 事件(如 Click、MouseDown),事件引數為 HtmlElementEventArgs。

完整範例

using System;
using System.Windows.Forms;

namespace WindowsApplication5
{
    public partial class Form1 : Form
    {
        public Form1() { InitializeComponent(); }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("about:blank");
            webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
        }

        private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            // 僅處理主文檔完成,忽略 iframe 等子框架
            if (e.Url != webBrowser1.Url) return;

            foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input"))
            {
                if (el.Name == "btnG") // 依 name/id/class 篩選目標元素
                {
                    el.Click += Form1_Click; // 直接訂閱 CLR 事件
                }
            }
        }

        private void Form1_Click(object sender, HtmlElementEventArgs e)
        {
            MessageBox.Show("jinjazz pass - HTML 按鈕被點擊!");
        }
    }
}

關鍵點說明

  1. DocumentCompleted 過濾:e.Url == webBrowser1.Url 確保僅處理主文檔,避免 iframe 觸發多次。
  2. 元素查找:GetElementsByTagName, GetElementById, Document.All 等多種方式定位目標節點。
  3. 事件訂閱:HtmlElement 事件為標準 .NET 事件,支援 Click, MouseDown, KeyPress, Change 等,引數提供 MousePosition, KeyPressedCode 等資訊。
  4. 雙向互動:WinForms 亦可呼叫 webBrowser1.Document.InvokeScript("jsFunction") 執行 JavaScript,實現雙向通訊。

常見坑點

  • 動態生成的 DOM 元素需在生成後重新掛事件,或使用事件委派模式(jQuery .on() 再回呼 C#)。
  • 跨域文檔(不同源)無法存取 DOM,會拋出 COM 例外。
  • WebBrowser 底層為 IE ActiveX,渲染引擎較舊,現代 Web 應用建議遷移至 WebView2 (Edge Chromium)。

結語

透過 HtmlElement 事件模型,C# 可無縫接管網頁元素互動,是桌面應用內嵌 Web UI、自動化測試、爬蟲登入的基石技術。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved