Изменение фокуса клавиш со стрелками на перемещение игрока вместо кнопок

Итак, я создаю игру, используя форму (похожую на игру со змеями) в С#, и я хочу перемещаться по игроку с помощью клавиш со стрелками. Рядом с сеткой (доской), на которой ведется игра, у меня есть несколько кнопок, таких как; пауза, запуск и т. д. Когда я нажимаю клавиши со стрелками, фокус находится на кнопках (он просматривает кнопки), а не перемещает плеер. Как я мог изменить это?

с уважением,

Хенк


person henk_bae    schedule 10.03.2017    source источник


Ответы (1)


Сначала вы должны установить для формы KeyPreview значение true и подписаться на KeyDownevent формы в дизайнере или добавить эту строку в конструктор формы:

this.KeyPreview = true;
this.KeyDown += Form1_KeyDown;

Затем добавьте этот код для события нажатия клавиши. По сути, он сообщает событию, что нажатие клавиши уже было обработано, если нажатая клавиша является одной из стрелок:

private void Form3_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode==Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left ||e.KeyCode == Keys.Right)
    {
        e.Handled = true;
        MovePlayer(e.KeyCode);
    }
}

private void MovePlayer(Keys key)
{
    switch (key)
    {
        case Keys.Up:
            // your player moveup code
            break;
        ...
    }
}
person Pikoh    schedule 10.03.2017