C # пытается перехватить событие KeyDown в форме

Я создаю небольшую игру, игра печатается на панели в форме окна. Теперь я хочу захватить событие нажатия клавиш, чтобы увидеть, были ли нажаты клавиши со стрелками, однако проблема в том, что я могуКажется, я это понял.

Позвольте мне объяснить, в форме у меня есть 4 кнопки и различные другие элементы управления, и если пользователь, например, нажимает одну из кнопок (для запуска игрового события), то кнопка имеет фокус, и я могу 'захватить движения с помощью клавиш со стрелками.

Я пробовал что-то вроде

private void KeyDown(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Left)
        {
            game.MovePlayer(DonutWarsLibrary.GameObjects.Direction.E);
            game.DrawObjects(panel1.CreateGraphics());
        }
        else if (e.KeyCode == Keys.Right)
        {
            game.MovePlayer(DonutWarsLibrary.GameObjects.Direction.W);
            game.DrawObjects(panel1.CreateGraphics());
        }
        else if (e.KeyCode == Keys.Up)
        {
            game.MovePlayer(DonutWarsLibrary.GameObjects.Direction.N);
            game.DrawObjects(panel1.CreateGraphics());
        }
        else if (e.KeyCode == Keys.Down)
        {
            game.MovePlayer(DonutWarsLibrary.GameObjects.Direction.S);
            game.DrawObjects(panel1.CreateGraphics());
        }
    }

а затем, когда была нажата кнопка формы вниз, я использовал это

private void MainForm_KeyDown(object sender, KeyEventArgs e)
    {
        KeyDown(e);
    }

Я также добавил keydown для кнопок и различных других элементов управления в форме окна, но я не получаю никакого ответа. Я установил точку останова внутри функции, чтобы увидеть, если этоВызывается, но эта точка останова никогда не срабатывает?

Есть идеи?

Наиболее оптимальным было иметь общее событие KeyDown, которое запускается (независимо от того, какой элемент управления в данный момент имеет фокус), а затем вызывает метод KeyDown.

Ответы на вопрос(3)

Ваш ответ на вопрос