winforms - VB Web 浏览器键盘命令

标签 winforms visual-studio

我创建了一个小工具,可以依次加载三个网页。我使用 3 个按钮在 VB 表单中前后移动相应的浏览器。

我创建了 3 个用于前进、后退和刷新的按钮,并且能够使用一些 if/elseif/else 逻辑使它们仅与前面的浏览器交互。我想在按钮上添加键盘快捷键,以便我可以使用 CTRL+R 刷新前端浏览器...有人可以指导我如何执行此操作吗?

这里是表单代码: 公开课表格1 前面变暗为字符串

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        WebBrowser1.BringToFront()
        Front = "WebBrowser1"
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        WebBrowser2.BringToFront()
        Front = "WebBrowser2"
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        WebBrowser3.BringToFront()
        Front = "WebBrowser3"
    End Sub

    Private Sub BackBtn_Click(sender As Object, e As EventArgs) Handles BackBtn.Click
        If Front = "WebBrowser1" Then
            WebBrowser1.GoBack()
        ElseIf Front = "WebBrowser2" Then
            WebBrowser2.GoBack()
        ElseIf Front = "WebBrowser3" Then
            WebBrowser3.GoBack()
        End If
    End Sub

    Private Sub ForwardBtn_Click(sender As Object, e As EventArgs) Handles ForwardBtn.Click
        If Front = "WebBrowser1" Then
            WebBrowser1.GoForward()
        ElseIf Front = "WebBrowser2" Then
            WebBrowser2.GoForward()
        ElseIf Front = "WebBrowser3" Then
            WebBrowser3.GoForward()
        End If
    End Sub

    Private Sub RefreshBtn_Click(sender As Object, e As EventArgs) Handles RefreshBtn.Click
        If Front = "WebBrowser1" Then
            WebBrowser1.Refresh()
        ElseIf Front = "WebBrowser2" Then
            WebBrowser2.Refresh()
        ElseIf Front = "WebBrowser3" Then
            WebBrowser3.Refresh()
        End If
    End Sub
End Class

最佳答案

处理此类组合的最佳方法是覆盖 ProcessCmdKey ,组合键随时都会被捕获。

示例:

将下面的覆盖函数粘贴到您的表单中。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    End Sub

    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean

        If ((keyData And Keys.R) = Keys.R) And ((keyData And Keys.Control) = Keys.Control) Then
            MessageBox.Show("CTRL+R pressed")
        End If

        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
End Class

注意:人们可能会想使用 Control.ModifierKeys捕获 CTRL 但它不起作用,正确的方法是使用上面的 bitwise And operator针对keyData

关于winforms - VB Web 浏览器键盘命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525944/

相关文章:

c# - 如何在来自 Web API 的窗体加载事件上预填充 Windows 窗体控件?

vb.net - 在Windows窗体中重绘椭圆时如何停止闪烁

git - 在 Visual Studio 中显示当前的 Git 分支?

visual-studio - 如何阻止.net-core在构建时不断添加文件夹

visual-studio - Visual Studio - 用于部署/源代码控制/源代码共享的用户名/密码管理

c# - 更改 Thread.Priority 以使程序响应更快

c# - 如何刷新绑定(bind)源

c# - 覆盖 OnPaint

c# - 如何在 WinForm 和 C# (Visual Studio 2015) 中使用 .Net Native?

c# - 为 Entity Framework 运行自定义工具,它有什么作用?