永发信息网

vb.net(2013版本)如何禁止键盘事件。

答案:2  悬赏:0  手机版
解决时间 2021-03-07 14:13
  • 提问者网友:斑駁影
  • 2021-03-07 07:24
如题:我在做程序时,想要在某一个过程中不响应输入,不管用户输入什么,都无视,不记录,不缓存。而不是记录下来,等下次按键事件的时候,把前一次的提取出来输出。
举例:在用户看一个视频的时候,他按了“1”键。但是当时没有按键事件,因为我做了key_state,当key_state=0时,就不响应按键。但当key_state=1时,用户按了一个“2”键。但是程序现在输出了“1”,我想要的是“2”,忽略“1”。
我尝试过给按“1"时的keypress事件标记为处理过,但是我只按键一次啊!!!用户按的这个”2“只能在下次按键的处理了……肿么办……T T(脑子不够用了)

T T 满地打滚求教。
我想到两个解决方案,但是我都不会,也没有尝试过。求教教。
输出所有按过的键,然后选择最后一个。但是我不知道怎么输出所有按过的,貌似触发一次keypress事件只输出一个。
做个多线程的,一边看视频(貌似现在我的看视频的这个是16ms刷新一次,所以程序没有事件处理我的按键事件);一边触发按键事件。but,不会做多线程的,求指导。
邮箱:754658319@qq.com
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-03-07 08:39
Dim key_state As Integer = 0
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True '设置窗体响应键盘操作
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'MsgBox(e.KeyCode) '这行开启可以测试你输入的按键代码
If key_state = 0 Then e.Handled = True '取消操作
Select Case e.KeyCode
Case 49 '按键1
'................操作脚本
Case 50 '按键2
'................操作脚本
End Select
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
e.Handled = True '取消操作
End Sub

'*******************************************************************************另一种方法
AddHandler Me.KeyDown, AddressOf Form1_KeyDown '需要时加入事件
RemoveHandler Me.KeyDown, AddressOf Form1_KeyDown '不需要时删除事件
全部回答
  • 1楼网友:孤老序
  • 2021-03-07 09:21
我可以写 用的是vb2010
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯