在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);
}