【问题标题】:How do I handle an HTML button being pressed in a web browser object in VB.NET?如何处理在 VB.NET 的 Web 浏览器对象中按下的 HTML 按钮?
【发布时间】:2019-01-16 07:29:37
【问题描述】:

这里是 VB.NET 菜鸟,

有什么方法可以处理在 Web 浏览器控件中单击的 HTML 对象?我设法获得的最接近的是浏览器的鼠标按下事件处理程序,它写入鼠标的位置,但我无法获取有关单击了哪个 html 对象的信息。

Private Sub myWB_mouseDown(ByVal sender As Object, ByVal e As HtmlElementEventArgs)
    If e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left Then
        'mousedown event
        Debug.WriteLine(e.ClientMousePosition)
    End If
End Sub

【问题讨论】:

  • 解析HtmlElement对象的事件。 HtmlDocument.BodyHtmlElement 之一(不过,这可能很棘手)。当您发现下一个(显然)奇怪的行为时更新问题。
  • 如果我的回答解决了您的问题,请不要忘记按左侧的勾选/复选标记将其标记为已接受我的帖子。更多信息请参考:How does accepting an answer work?谢谢!
  • 如果您对此或我的实施有任何其他疑问或问题,请在对我的回答的评论中告诉我!

标签: vb.net visual-studio events vb.net-2010


【解决方案1】:

由于您有点击的坐标,您可以使用HtmlDocument.GetElementFromPoint() 来获取点击点处的元素。

然后您可以检查元素的TagName property 以确定被点击元素的类型,即它是<button> 还是<input> 元素。如果是后者,还需要检查GetAttribute("type"),判断输入元素的类型是否为submit,即为按钮。

If myWB.Document IsNot Nothing AndAlso e.MouseButtonsPressed = Windows.Forms.MouseButtons.Left Then
    Dim ClickedElement As HtmlElement = myWB.Document.GetElementFromPoint(e.ClientMousePosition)

    If ClickedElement IsNot Nothing AndAlso _
        (ClickedElement.TagName.Equals("button", StringComparison.OrdinalIgnoreCase) OrElse _
         (ClickedElement.TagName.Equals("input", StringComparison.OrdinalIgnoreCase) AndAlso ClickedElement.GetAttribute("type").Equals("submit", StringComparison.OrdinalIgnoreCase))) Then

        'ClickedElement was either a <button> or an <input type="submit">. Do something...

    End If
End If

【讨论】:

    猜你喜欢
    • 2021-04-04
    • 2021-12-18
    • 2011-11-05
    • 2013-01-10
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多