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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.NET如何使控件不能响应KeyDown事件相关的知识,希望对你有一定的参考价值。

我已将窗体的KeyPreview属性改为True,然后在窗体的KeyDown 事件中处理所有键盘事件,这样在窗体具有焦点时就可以用了。但是,如果窗体上有一个Button 的话,程序就会在执行完窗体的KeyDown 事件后又响应了Button 的KeyDown 事件。我试过在窗体的KeyDown 事件中写e.Handled =True 来告诉程序已经处理过此键盘事件了,但没用。所以要怎么样才能屏蔽或禁用掉控件的KeyDown 事件啊?对了,如果是一个文本框正在编辑可不能屏蔽它的KeyDown 事件,不然没法输入了,这可以在窗体的KeyDown 事件中判断如果是焦点在文本框上则退出KeyDown 事件。所以关键是怎么让Button 不能响应键盘事件。

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键盘事件的代码。
参考技术A 因为当焦点在button和textbox上时,button和textbox本身会响应键盘事件,此时form就不响应了,如果你希望即使在文本框输入文字时,也要响应热键,那就要做全局热键监控,具体方法请百度 参考技术B 要明确你究竟想响应哪些控件的事件,根据你上面的描述似乎你只需要统一的整个Form的KeyDown 事件,因此设置了KeyPreview属性改为True后就不需要写其他控件的事件了。

vb.net 如何使panel有一定透明度

就是想让panel以后面的控件为背景,但又不能完全透明,只是有一定的透明度,当然也得让panel上的控件具有和panel一样的透明度。不知道这个代码怎么写呢?

不知道你用过VB6没有,vb6里的image控件和label控件是可以完全透明的,就是控件下面不管有什么都可以显示出来。

但vb.net里没有这样完全透明的控件了。

vb.net 里面设完背景色透明之后只显示出它属于的那个窗口的背景,比如form里有个label,label透明之后只能显示出他盖住的那部分form的图像,而如果panel里有个label的话,那他只显示panel的背景图像。追问

所以该怎么弄出完全透明的控件呢?

参考技术A 把panel的backcolor和控件的backcolor修改为一致就可以了;
或者你ps下一个图片,使二者一致;追问

修改一致没有任何用处啊,他们的背景是后面动态变化的控件,而不是特定颜色
背景是动态变化的控件,弄图片没用

以上是关于VB.NET如何使控件不能响应KeyDown事件的主要内容,如果未能解决你的问题,请参考以下文章

JS keydown 不响应中文输入

vb.net 如何使panel有一定透明度

如何阻止 WPF KeyDown 事件从某些包含的控件(例如 TextBox)冒泡?

vb.net中怎么解决截取tab按下的事件

VB.NET 图片框/控件

【C# panel】怎样能使填充窗体后的panel响应一下鼠标事件呢?