小さなゲームをコーディングしているときに、問題が発生しました。私のフォームKeyDown
とKeyUp
イベントはまったく起動しません。
フォームのコードは次のとおりです。
public class GameForm : Form
{
private ControllableBlock player;
public GameForm()
{
KeyDown += Game_KeyDown;
KeyUp += Game_KeyUp;
player = new ControllableBlock();
Controls.Add(player);
}
private void Game_KeyDown(object sender, KeyEventArgs e)
{
player.ReactToKey(e.KeyCode);
}
private void Game_KeyUp(object sender, KeyEventArgs e)
{
player.ReactToKey(e.KeyCode);
}
}
まだまだたくさんのことがありますが、私は関連するコードを貼り付けただけです。
私はすでに設定this.KeyPreview = true;
と呼び出しを試しましたがthis.Focus();
、どちらも機能しません。問題はReactToKey()
メソッドにありません。すでにブレークポイントを設定していて、イベントが発生することはありません。
編集:いくつかのテストの後、問題は私の中にあるという結論に達しましたControllableBlock
。それでも、理由はわかりませんが、現在取り組んでいます。に関連するすべてをコメントアウトするplayer
と、イベントが発生し始めます。
編集2:問題は私がControllableBlock
から継承していることのようControl
です。から継承すればPanel
問題なく動作します。
どうしてこれなの?コントロールから継承した場合、イベントを発生させることはできませんか?
クラスは今のControllableBlock
ところ空なので、から継承する以外は何もしませんControl
。
編集3:報奨金を開始したので、イベントを発生させる方法についての解決策を探しているのではなく、イベントが発生しない理由を探していることを明確にしておきたいと思います。から継承しControl
ます。