在C#程序设计中,经常需要处理Form中的键盘消息,在Form上,含有各种各样的控件,此时,应该注意,在C#中,对每一个控件不会相应键盘事件,键盘响应时间只针对于Form,可以在Form键盘消息中注册键盘消息。
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyDown);
为了让Form相应键盘消息,应该增加键盘消息的使能
this.KeyPreview = true;
在Form中写入键盘消息的相应函数MainForm_KeyDown
privatevoid MainForm_KeyDown(System.Object sender, System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
caseKeys.Up:
break;
caseKeys.Left:
break;
caseKeys.Right:
break;
caseKeys.Down:
break;
}
… …… … … ……
}
通过以上代码,C#应用程序就能采用键盘事件进行相关的事件处理,由于本文所用的键为方向键,在程序运行中,方向键会在某些控件的发挥其它作用,为了使所用的键没有二义性,可以重载键盘处理函数ProcessDialogKey()。
protectedoverridebool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down ||
keyData == Keys.Left || keyData == Keys.Right)
returnfalse;
else
returnbase.ProcessDialogKey(keyData);
}