Vb.net在窗体上而非textbox控件上捕捉键盘上按下的键

前端之家收集整理的这篇文章主要介绍了Vb.net在窗体上而非textbox控件上捕捉键盘上按下的键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

之前一直苦苦纠结怎么实现这个问题,今天无意间发现了 窗体上有 keypriview这个属性

后经过查找相关资料,了解它是用于窗体捕捉键盘上按下的键

只要新建一个窗体,将此属性设置为true,便可以轻松实现这个功能

方法一:
使用提交为 me.keydown完成

  1. Private Sub form_keypress(sender As Object,e As KeyEventArgs) Handles Me.KeyDown
  2. If e.KeyCode = Keys.Escape Then
  3. Dim messge As New MSG
  4. messge.head.Text = "即将退出系统"
  5. messge.msgP.Text = "按下enter退出系统,esc返回..."
  6. messge.Show()
  7. End If
  8. If e.KeyCode = Keys.F4 Then
  9. Dim messge As New MSG
  10. messge.head.Text = "F4"
  11. messge.msgP.Text = "你按下了F4"
  12. messge.Show()
  13. End If
  14. If e.KeyCode = Keys.F5 Then
  15. Dim messge As New MSG
  16. messge.head.Text = "F5"
  17. messge.msgP.Text = "你按下了F5"
  18. messge.Show()
  19. End If
  20. End Sub

这样可以轻松捕捉键盘上的所有键
esc举例:

F4 举例

F5举例

这里再例举一种方法:handles me.keypress

  1. Private Sub form_keypress(sender As Object,e As KeyPressEventArgs) Handles Me.KeyPress
  2. If e.KeyChar = ChrW(27) Then
  3. Dim messge As New MSG
  4. messge.head.Text = "即将退出系统"
  5. messge.msgP.Text = "按下enter退出系统,esc返回..."
  6. messge.Show()
  7. End If
  8. If e.KeyChar = Chr(115) Then
  9. Dim messge As New MSG
  10. messge.head.Text = "F4"
  11. messge.msgP.Text = "你按下了F4"
  12. messge.Show()
  13. End If
  14. If e.KeyChar = Chr(116) Then
  15. Dim messge As New MSG
  16. messge.head.Text = "F5"
  17. messge.msgP.Text = "你按下了F5"
  18. messge.Show()
  19. End If
  20. End Sub

但是,不幸的是这种方式不能捕捉到F1-F12,以及一些特殊的键,比如shift等

当然还可以用handles me.keyup也是可以实现的

猜你在找的VB相关文章