好记性不如烂笔头子,现在记录下来,不一定会有很详尽的实例,只写最核心的部分。
C# winform的窗体类有KeyPreview属性,可以接收窗体内控件的键盘事件注册。
窗体和控件都有KeyDown,KeyUp,KeyPress三个事件,每个事件都会有KeyEventArgs参数传入,只要判断传入参数的KeyChar就可以了,Framework提供了Keys枚举来表示键盘上的各个键。核心判断的代码如下:
1.单键判断if (e.KeyCode == Keys.Delete){ //处理逻辑} 2.组合建判断: if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.Delete){ //处理逻辑}3.判断上键
if (key == Keys.Up || key == Keys.PageUp)
{ if (index - 2 >= 0) { this.lstQueryFilterControls[index - 2].SetInputControlFocus(); }}
4.判断上键
if (key == Keys.Down || key == Keys.PageDown)
{ if (index + 2 <= this.lstQueryFilterControls.Count - 1) this.lstQueryFilterControls[index + 2].SetInputControlFocus(); else { if (this.listView.Items.Count > 0) { this.listView.Focus(); this.listView.Items[0].Selected = true; } }