C#如何全局禁用键盘的回车键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何全局禁用键盘的回车键相关的知识,希望对你有一定的参考价值。

C#如何利用钩子或者什么办法 全局禁用回车这个按键,比如:我把我的winform的窗口给最小化,然后进入网页,我按回车 回车不会作用在网页上。

在窗口内,通过重写ProcessDialogKey这个方法可以完全屏蔽回车键,具体代码可以参照帮助,就是个if判断而已,但弹出的网页已经不再程序的作用范围之内了,属于系统中的另一个程序,也就是浏览器,这个就不能控制了。但如果使用钩子之类的底层API去监听整个windows的Key按下事件从而屏蔽回车的话,可能会影响到其他程序,并不是个好办法。追问

不考虑影响其他程序 就是要实现这个效果,因该如何禁止?我试过钩子监听然后事件里用弹出messageBox的方式来禁止,但是会导致系统卡一段时间不知道为什么。利用钩子监听如何有效的禁用回车呢

追答

你不弹MessageBox不就好了,尽量减少代码,越是底层的东西越应该写的简洁,否则就会影响速度。就像画面刷新事件paint,你写几行判断没关系,可要是写个长点的,就会影响用户体验。因为他的触发频率太高,所以必须要减少程序的执行时间,以增加流畅性。

追问

不弹messageBox 我禁止不了回车啊 回车的效果还是在网页上触发了啊

追答

( ⊙ o ⊙ )啊!?截获事件是为了取消他,比如Keydown的参数e的Handle属性设为true,后面的keydown就不响应了,keypress里改了key值,结果就发生变化了之类的,和messagebox应该完全没有关系的,你代码怎么写的啊?

http://dev.yesky.com/msdn/435/2492435_3.shtml
这是我刚查到的,根据这上写的,你只要把回车过滤掉就行了,不需要弹messagebox

参考技术A //在KeyPress事件里写
if (e.KeyChar == (char)Keys.Enter)

e.Handled = true;

js监听键盘事件

用JS监听键盘按下事件(keydown event)

 

 1、监听全局键盘按下事件,例如监听全局回车事件

1  $(document).keydown(function(event){
2    if(event.keyCode == 13){
3      alert(\'你按下了Enter\'); 
4    }
5  });

 2、监听某个组件键盘按下事件,例如监听id为btn的button组件的回车按下事件

1  $("#btn").keydown(function(event){
2    if(event.keyCode == 13){
3      alert(\'你按下了Enter\'); 
4    }
5  });

 3、如果是要监听组合键,例如监听ctrl+c

1  $(document).keyup(function(event){ 
2    if (event.ctrlKey && event.keyCode === 67){ 
3      alert(\'你按下了CTRL+C\'); 
4    } 
5  }); 

 4、详细keyCode值列表

 

以上是关于C#如何全局禁用键盘的回车键的主要内容,如果未能解决你的问题,请参考以下文章

如何去掉字符串的前后TAB键和回车键

C# WinForm怎么实现点button后TextBox执行回车?

怎样用命令行禁用网卡

js监听键盘事件

按下回车键隐藏 android 键盘

如何在可编辑的 TextArea 中禁用回车?