如何在 c# 中的 if 语句 [webbrowser/winforms] 中使用 HtmlElement

本文关键字:winforms HtmlElement webbrowser 中的 语句 if | 更新日期: 2023-09-27 18:32:05

如何将这个foreach循环更改为if语句。它为每个图像显示消息[即使我只单击一个]。我只想在点击图片时显示一条消息...

[代码]

 private void webBrowser1_DocumentCompleted(object sender, CompletedEventArgs e)
        {
            foreach (HtmlElement ele in
                     webBrowser1.Document.GetElementsByTagName("img"))
            {
                ele.AttachEventHandler("onclick", Document_Click);
            }
        }
 private void Document_Click(object sender, EventArgs e)
        {
                MessageBox.Show("You clicked an image.");
        }

[我尝试过的]

 if (webBrowser1.Document.GetType().GetElementType().Equals("img"))
 {
    // I tried this
 }
 HtmlElement elemz;
 if (elemz.GetAttribute("type").Equals("img"))   
 {
    // And this
 }
 HtmlElement elemz;
 if (elemz == webBrowser1.Document.GetElementsByTagName("img"))
 {
    // Also this
 }
 if (webBrowser1.Document.GetType("img") == true)
 {
    // Finally I tried this
 }
 HtmlElement elemz;
 if (elemz.GetAttribute("type") == webBrowser1.Document.GetElementsByTagName("img"))
 {
    // My last hope was this 
 }

如何在 c# 中的 if 语句 [webbrowser/winforms] 中使用 HtmlElement

并不是为每个

图像显示单击事件,而是因为 DocumentCompleted 事件触发了多次。(请参阅 Web 浏览器文档已完成事件触发多次)。如果您检查 e.Url 以确保您只运行实际页面 DocumentDone 的代码,您将看到该事件仅触发一次。

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        if (e.Url.Equals(webBrowser1.Url)) {
            foreach (HtmlElement ele in webBrowser1.Document.GetElementsByTagName("img")) {
                ele.AttachEventHandler("onclick", Document_Click);
            }
        }
    }