C#的winform程序中主窗口中加入了若干控件,之后OnKeyDown事件就不能触发了,请问这是怎么回事?

我试图去掉了窗口中的控件,OnKeyDown事件又可以触发了,KeyPreview的值也设置成true了,可加上这些控件键盘事件就不能触发了,有winform开发经验的人来指教下,怎么给程序设置全局键盘事件,是要全局的哦,没有任何特殊键的那种。

OnKeyDown,OnKeyUp,OnKeyPress都需要窗口有焦点的时候才会触发,你摆上控件之后相当于焦点被控件夺走了。
不过有办法,咱重写另外一个方法,就无关焦点了:
override bool ProcessCmdKey(ref Message msg, Keys keyData)追问

可是重写这个方法,又有新的问题,无法执行组合键的事件触发

温馨提示:内容为网友见解,仅供参考
无其他回答

C#的winform程序中主窗口中加入了若干控件,之后OnKeyDown事件就不能触发...
OnKeyDown,OnKeyUp,OnKeyPress都需要窗口有焦点的时候才会触发,你摆上控件之后相当于焦点被控件夺走了。不过有办法,咱重写另外一个方法,就无关焦点了:override bool ProcessCmdKey(ref Message msg, Keys keyData)

C#中自定义控件里加入 keydown 事件
Page_Load里写 this.combox.Attributes.Add("onkeydown", "if(event.keyCode==13) {document.all." + this.btn1.ClientID + ".focus();document.all." + this.btn1.ClientID + ".click();}");按扭事件写你自己要的东西

c# 点窗体控件 触发
你这个控件要自动生成吗? 不是自动生成的话没有这么复杂吧?比方说一个窗体里有三个按钮,点击其中任意一个都会触发事件show(),那么你就写一个方法(方法名自定义),private void show(){...},然后去到[设计]中给每个按钮的事件(点击图片上的"闪电")onClick点击选择show(),就ok ...

c#中, 按ente键就等于按了某一个按钮 请问怎么编程来着
右键点击你想要设置默认的按钮 设置tabindex属性为0 这是程序的方法 如果是ASP.NET 在页面源代码的 FORM中 添加DEFAULTBUTTON="你想设置的按钮ID" 即可

C# winform 程序在后台运行 点击快捷键使程序做出相应反应。_百度知 ...
如果没有报错的话.看看是不是内存不够.或者系统的类库不足.例如你调用COM组件.引用了其他的DLL等等.都是可能存在的问题。对这个需求完全可以在单击“关闭”按钮的时候弹出一个对话框,来让用户确定是否真的要退出。这是一个很好的解决方法,并且实现也是很容易的。但是人家不想这样,想要拥有类似QQ在...

C#的WinForm程序中的文本框只能输入数字,字母,中文
文本框的KeyPress方法里写代码如下:e.Handled = true;if ((e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar >= 'a' && e.KeyChar <= 'z')) e.Handled = false;

c#中长期按住键子的功能触发的是什么事件
不好意思onmousedown是javascript的事件。mousedown 和moseup 是鼠标操作 keydown 和 keyup是键盘操作 mousedown 是鼠标按下的时候触发,抬起的时候结束。moseup 是鼠标抬起的瞬间触发。DateTime mouseDownTime;private void Form1_MouseDown(object sender, MouseEventArgs e){ mouseDownTime = DateTime.Now;th...

C# 如何将控件传递键盘事件给窗体
public Form1(){ InitializeComponent();} private void groupBox1_Click(object sender,EventArgs e){ \/\/下面两种方法都是可行的,你都可以试试。\/\/this.OnClick(e); \/\/方案1 Form1_Click(sender, e); \/\/方案2 \/\/方案2比较直观一些吧,呵呵。\/\/而且下面这种的另一个好处就是知道用户点...

C# picturebox控件怎么没有keydown事件
keydown事件?不是“想在picturebox控件上点右键”吗?应该是用Click或者MouseClick事件吧?在窗体的keydown事件中处理啊!你的picturebox控件不放在窗体上的吗?怎么样都应该有个父控件吧?在那里面处理就行了.

c# winform 中怎样让一个文本框可以用扫描枪输入,而不能用键盘输入_百...
1.将TextBox属性设为ReadOnly=true。结果:无法输入。2.在TextBox的KeyPress事件中设置属性e.handle=true。结果:扫描枪输入时也会触发KeyPress事件,因此也不能输入。3.在TextBox的ValueChanged事件中判断结果。结果:扫描枪也是一个一个字符输入,不是一次性将整个条码输入。思考:扫描枪其实在输入上与...

相似回答