C# WinForms 浏览器控件中的图像单击

本文关键字:图像 单击 控件 WinForms 浏览器 | 更新日期: 2023-09-27 18:31:53

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    webBrowser1.Document.Body.MouseDown += Body_MouseDown;
}
void Body_MouseDown(object sender, HtmlElementEventArgs e)
{   
    switch (e.MouseButtonsPressed)
    {
        case MouseButtons.Left:
            HtmlElement element = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition);
            if (element != null && "img".Equals(element.GetAttribute("type"), StringComparison.OrdinalIgnoreCase))
            {
                MessageBox.Show("Image Was Clicked");
            }
            break;
    }
}

这是我正在使用的代码,但它似乎不起作用。我做错了什么?这是正确的方法吗?

感谢任何和所有的帮助。

C# WinForms 浏览器控件中的图像单击

并非 html 中的所有图像都具有 type 属性。因此,您必须定义可点击图像具有。例如,我编辑了您的代码:

WebBrowser的初始化(你可以把它放在WinForm的构造函数中):

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            webBrowser1.Navigate("http://www.google.com");

您的程序Body_MouseDown:

void Body_MouseDown(object sender, HtmlElementEventArgs e)
            {
                switch (e.MouseButtonsPressed)
        {
            case MouseButtons.Left:
                HtmlElement element = webBrowser1.Document.GetElementFromPoint(e.ClientMousePosition);
                if (element != null)
                {
                    string s = element.Style;
                    if ((s != null) && (s.IndexOf(".png") != -1)) MessageBox.Show("Image Was Clicked");
                }
                break;
        }       
            }

如果您单击Google徽标,您将获得所需的消息框。关键是我使用HtmlElement的属性 Style 并在其中搜索子字符串".png"。您可以搜索所需的所有格式:jpg,gif,bmp或全部。祝你好运。