VB.NET如何使控件不能响应KeyDown事件

我已将窗体的KeyPreview属性改为True,然后在窗体的KeyDown事件中处理所有键盘事件,这样在窗体具有焦点时就可以用了。但是,如果窗体上有一个Button的话... 我已将窗体的KeyPreview属性改为True,然后在窗体的KeyDown 事件中处理所有键盘事件,这样在窗体具有焦点时就可以用了。但是,如果窗体上有一个Button 的话,程序就会在执行完窗体的KeyDown 事件后又响应了Button 的KeyDown 事件。我试过在窗体的KeyDown 事件中写e.Handled =True 来告诉程序已经处理过此键盘事件了,但没用。所以要怎么样才能屏蔽或禁用掉控件的KeyDown 事件啊?对了,如果是一个文本框正在编辑可不能屏蔽它的KeyDown 事件,不然没法输入了,这可以在窗体的KeyDown 事件中判断如果是焦点在文本框上则退出KeyDown 事件。所以关键是怎么让Button 不能响应键盘事件。 展开
 我来答
FMUD1
2014-01-27 · TA获得超过1008个赞
知道大有可为答主
回答量:1289
采纳率:71%
帮助的人:908万
展开全部
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If sender Is Me Then MsgBox(e.KeyData.ToString & vbCrLf & sender.ToString)
End Sub
Private Sub Button1_KeyDown(sender As Object, e As KeyEventArgs) Handles Button1.KeyDown
If sender Is Me Then MsgBox(e.KeyData.ToString & vbCrLf & sender.ToString)
End Sub
这样就行了,第一个过程if语句结果为真,第二个过程if语句结果为假,你的所有问题都可通过if判断语句解决,msgbox代码只是做个测试,实际为你响应form键盘事件的代码。
轻快且稳固灬多宝鱼B
2019-12-06 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:921万
展开全部
因为当焦点在button和textbox上时,button和textbox本身会响应键盘事件,此时form就不响应了,如果你希望即使在文本框输入文字时,也要响应热键,那就要做全局热键监控,具体方法请百度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2014-01-27 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7847万
展开全部
要明确你究竟想响应哪些控件的事件,根据你上面的描述似乎你只需要统一的整个Form的KeyDown 事件,因此设置了KeyPreview属性改为True后就不需要写其他控件的事件了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式