クラスを作成するフォームがあります。このクラスは、フォームで発生するイベントを処理します。問題は、KeyDown イベントを使用しようとしていますが、フォームにボタンがあり、KeyDown をキャプチャしているため、機能していません。別の投稿で解決策が ProcessCmdKey をオーバーライドすることであることがわかりました。問題は、別のクラス内からメソッドをオーバーライドする方法がわからないことです。他のクラス内からすべての KeyDown イベントをキャプチャする方法を誰か教えてもらえますか?
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Left)
{
MoveLeft(); DrawGame(); DoWhatever();
return true; //for the active control to see the keypress, return false
}
else if (keyData == Keys.Right)
{
MoveRight(); DrawGame(); DoWhatever();
return true; //for the active control to see the keypress, return false
}
else if (keyData == Keys.Up)
{
MoveUp(); DrawGame(); DoWhatever();
return true; //for the active control to see the keypress, return false
}
else if (keyData == Keys.Down)
{
MoveDown(); DrawGame(); DoWhatever();
return true; //for the active control to see the keypress, return false
}
else
return base.ProcessCmdKey(ref msg, keyData);
}