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

时间:2014-11-25 20:44:43

标签: c# winforms webbrowser-control custom-events

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;
    }
}

这是我正在使用的代码,但它似乎没有用。我究竟做错了什么?这是正确的方法吗?

任何&所有帮助都得到了赞赏。

1 个答案:

答案 0 :(得分:0)

并非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或所有格式。 祝你好运。