winform 程序中响应键盘事件1
在winform程序中给form添加了keyup事件,但是程序却不响应键盘事件,解决办法是重写Form基类的ProcessCmdKey(ref Message msg, Keys keyData)方法。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.F4) { FormFastHitStates form = new FormFastHitStates(); form.ShowDialog(); } return true; //return base.ProcessCmdKey(ref msg, keyData); }
将Form类的属性KeyPreview设置为ture
winform键盘事件的响应2
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.Right: MessageBox.Show("Right"); break; case Keys.Left: MessageBox.Show("Left"); break; case Keys.Up: MessageBox.Show("up"); break; case Keys.Down: MessageBox.Show("down"); break; case Keys.Space: MessageBox.Show("space"); break; case Keys.Enter: MessageBox.Show("enter"); break; } //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键. //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框 //return base.ProcessCmdKey(ref msg, keyData); return true;//这里return true 否则控件焦点会跟着方向键改变 } 第一种:重载ProcessCmdKey方法,直接在winform程序中加入这个就可以了 protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) { if (keyData == (Keys.Control | Keys.N)) { MessageBox.Show("按下了Control+N") return true; } return base.ProcessCmdKey(ref msg, keyData); } 第二中方法: 在form的keydown事件中捕捉按钮事件,程序如下, 需要注意:form的KeyPreview 属性设置为true,否则捕捉不到事件 #region 快捷键 private void PhoneForm_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.S) { Control[] controls = this.pCallList.Controls.Find("recorder",true); if (controls.Length > 0) { ((CallRecorder)controls[0]).btnSave_Click(null, null); } } else if (e.Control && e.KeyCode == Keys.P) { Control[] controls = this.pCallList.Controls.Find("recorder", true); if (controls.Length > 0) { ((CallRecorder)controls[0]).btnSend_Click(null, null); } } else if (e.Control && e.KeyCode == Keys.T) { foreach (Control call in panelCalls.Controls) { if (call is UserCall) { if (((UserCall)call).isTalking) { ((UserCall)call).btnHangupCall_Click(null, null); } else { ((UserCall)call).btnAcceptCall_Click(null, null); } } } } } #endregion
winform键盘事件的响应3
想要实现点击键盘触发事件更改值首先我们需要更改一个属性
KeyPreview这个属性 ,我们需要将这个属性改为True 这个属性默认时False , 当这个属性为False的时候,我们时不能实现点击键盘触发事件的
然后我们在事件里面找到KeyDown
当我们给KeyDown声明了一个方法之后,我们就需要你点击的按键的值
当上述都完成之后,我们就可以进行按下键盘键位之后的想要的任何操作啦,例如
private void Form2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.S && e.Control) // 按下ctrl和s时 { MessageBox.Show("我是ctrl+s,我想要保存数据"); } }
winform程序在初始化时窗口最大化
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;