65.9K
CodeProject 正在变化。 阅读更多。
Home

如何判断 WebBrowser 控件中的哪个被点击了

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (18投票s)

2009年1月6日

公共领域

2分钟阅读

viewsIcon

66452

downloadIcon

2271

本文解释了如何获取 WebBrowser 控件中被点击的 HTML 元素。

引言

这是我的第一次提交。它很小,对初学者会有帮助。

本文将演示如何确定在 WebBrowser 控件内的光标下选择的内容,并使用您自己的自定义 ContextMenu。您是否曾经希望替换默认的 Internet Explorer ContextMenu? 这应该可以帮助您完全实现该目标。

背景

我目前正在为孩子们编写一个 WebBrowser 应用程序。一切都运行良好,我认为我快完成了……除了那个令人讨厌的 - 显然是 Internet Explorer - ContextMenu

让自定义 ContextMenu 工作不是本文的重点,因为它可以通过几个简单的步骤来实现。本文的重点是能够提供接近 Internet Explorer 呈现的功能,通过为页面上的不同元素提供不同的菜单。

例如,点击图像时显示“保存图片”,点击链接时显示“复制快捷方式”。

使用代码 

我包含了一个示例项目,其中概述了这里的内容。

首先,我们需要将屏幕上的鼠标坐标转换为 Point 对象

Point ScreenCoord = new Point(MousePosition.X, MousePosition.Y); 

现在,我们必须基于屏幕坐标创建浏览器的坐标

Point BrowserCoord = webBrowser1.PointToClient(ScreenCoord);

现在我们可以使用 WebBrowser 文档的 GetElementFromPoint 方法来检索被点击的元素

HtmlElement elem = webBrowser1.Document.GetElementFromPoint(BrowserCoord);

现在,我们可以使用这个元素来查看点击了什么

switch (elem.TagName)
{
    case "A":
        //! We have clicked a link
        break;
    case "IMG":
        //! We have clicked an image
        break;
    default:
        //! This is anywhere else
        break;
}

关注点

为此方法我绞尽脑汁了很长时间。我找不到任何东西,甚至在 The Code Project 上也没有找到。所以我认为这对一些人会有帮助。请注意,一旦您获得了该元素,就可以对其进行任何操作,例如使用 GetAttribute 来检索图像的 SRC 以进行下载等。

历史

  • 2009/1/7 - 首次提交 - 老实说,这就是我需要的!
  • 2009/1/8 - 尝试澄清文章的目标
© . All rights reserved.