章鱼哥出品—VB.Net 自定义快捷键详解之半全局快捷键
VB.Net 定义快捷键有些很方便的方法,我自己将这些快捷键分成了三类(非专业啊,别误导大家) 1、全局快捷键。作用在整个程序,就是不论现在的焦点在哪,在Form1也好Form2也好,只要按下了快捷键就会执行定义的函数。 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 执行效果截图: : (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Swift 2 jSON Call can throw but it is not marked with t
- flex的PopUpManager弹出窗口位置
- 详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)
- ruby-on-rails – 用于查找邮政编码的Ruby Geocoder gem
- MVVMCross社区SqLite – 表之间的关系
- 在PostgreSQL中逐步刷新materalized视图
- c# – ChannelFactory可以成为Faulted吗?
- 检查从Swift中的UILocalNotification启动
- Ruby元编程:如何使模块方法看到类的变量
- Oracle database 12.2的dbca选项