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

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

概述VB.Net 定义快捷键有些很方便的方法,我自己将这些快捷键分成了三类(非专业啊,别误导大家)         1、全局快捷键。作用在整个程序,就是不论现在的焦点在哪,在Form1也好Form2也好,只要按下了快捷键就会执行定义的函数。         2、半全局快捷键。作用在控件集,比如当焦点不在Form1时,设置的Form1中的热键就不起作用,                但是当焦点在For 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 SubEnd Class


执行效果截图:

总结

以上是内存溢出为你收集整理的章鱼哥出品—VB.Net 自定义快捷键详解之半全局快捷键全部内容,希望文章能够帮你解决章鱼哥出品—VB.Net 自定义快捷键详解之半全局快捷键所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1272339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存