章鱼哥出品—VB.Net 自定义快捷键详解之半全局快捷键

VB.Net 定义快捷键有些很方便的方法,我自己将这些快捷键分成了三类(非专业啊,别误导大家)

        1、全局快捷键。作用在整个程序,就是不论现在的焦点在哪,在Form1也好Form2也好,只要按下了快捷键就会执行定义的函数。
        2、半全局快捷键。作用在控件集,比如当焦点不在Form1时,设置的Form1中的热键就不起作用,
               但是当焦点在Form1时,不论焦点在Form1种的哪个控件上,这个热键都可以执行

        3、局部快捷键。作用在控件上,只有焦点在该控件上时,才起作用

  全局热键的定义我在另一篇文章中已经给出了实例说明(章鱼哥出品—VB.NET 自定义快捷键使用详解之全局热键)这里讲解半全局变量。 传统的方法我们是在Text属性的命名时,在字母前加上&,比如设置Button1.Text="进入&E",那么在Button1所在的窗体获得焦点的时候,键入Alt+E 就会触发Button.Click事件。这种方法很实用,也很简单。但是我们设想一下,如何用这种方法设置Alt+F1  或者Alt+Esp还有Shift+E \Ctrl+W这些 快捷键呢?(有知道可以直接设置的朋友可以告诉我,我真的不知道)如果是在Button1的KeyDown事件中,用代码定义,那么只有在Button1获取焦点的时候才能触发了,那就是局部热键了。
本文给出了一种方法来解决这个问题,大家参考一下。代码直接复制可使用。

'***************************************************************************  
'作者:章鱼哥,QQ:3107073263 群:309816713  
'如有疑问或好的建议请联系我,大家一起进步  
'主要内容:  
'    自定义快捷键之半全局热键,使用两种方法实现,传统的方法在Text属性的字母前面加个&,另一种方法就是在KeyDown事件处理
'   之所以称为半全局热键是因为相对于整个应用程序都适用的热键,这里讨论的是只在该窗体上的热键
'主要功能:  
'    button1 快捷键 Alt+A / button2 快捷键Alt+B/ button3 快捷键 Shift+F1/button4 快捷键 Shift+D
'    button5 快捷键 Ctrl+F2 / button6 快捷键Ctrl+F
'    Button1和Button2的快捷键利用命名的方式设置的
'***********************************************************************  
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.KeyPreview = True '确定窗体上控件的按键事件向窗体注册,这步一定要有的
    End Sub
    ' 在窗体的KeyDown事件中过滤按键函数
    Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Deal_KeyDown(sender, e)
    End Sub

    '按键处理函数
    Private Sub Deal_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs)

        If e.Shift Then '判断是否曾按下Shift键,以下是Shift+*组合键
            Select Case e.KeyCode
                Case Keys.F1
                    Button3_Click(Nothing, Nothing)
                Case Keys.D
                    Button4_Click(Nothing, Nothing)
            End Select
            Exit Sub
        End If
        If e.Control Then '判断是否曾按下Ctrl键,以下是Ctrl+*组合键
            Select Case e.KeyCode
                Case Keys.F2
                    Button5_Click(Nothing, Nothing)
                Case Keys.F
                    Button6_Click(Nothing, Nothing)
            End Select
            Exit Sub
        End If
      
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = "按钮1触发,快捷键Alt+A"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        TextBox1.Text = "按钮2触发,快捷键Alt+B"
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        TextBox1.Text = "触发按钮3,快捷键Shift+F1"
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        TextBox1.Text = "触发按钮4,快捷键Shift+D"
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        TextBox1.Text = "触发按钮5,快捷键Ctrl+F2"

    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        TextBox1.Text = "触发按钮6,快捷键Ctrl+F"
    End Sub
End Class


执行效果截图:



  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章鱼小哥0826

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值