Tôi đang tạo một trò chơi nhỏ, trò chơi được in lên bảng điều khiển ở dạng cửa sổ. Bây giờ tôi muốn nắm bắt các sự kiện keydown để xem nếu các phím mũi tên đã được ép, vấn đề tuy nhiên là tôi dường như không thể nắm bắt nó.C# cố gắng chụp sự kiện KeyDown trên một biểu mẫu
Hãy để tôi giải thích, trên biểu mẫu tôi có 4 nút và các điều khiển khác và nếu người dùng nhấn một trong các nút (để kích hoạt sự kiện trò chơi) thì nút có tiêu điểm và tôi không thể chụp chuyển động với các phím mũi tên.
tôi đã cố gắng một cái gì đó giống như
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());
}
}
và sau đó khi chính thức xuống Sự kiện này được ép, tôi sử dụng này
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
KeyDown(e);
}
Tôi cũng đã thêm KeyDown cho các nút và các điều khiển khác nhau trên cửa sổ hình thức, nhưng tôi không nhận được bất kỳ phản ứng lại. Tôi đã thiết lập một điểm ngắt bên trong hàm để xem nó có được gọi hay không, nhưng điểm ngắt đó không bao giờ kích hoạt?
Bất kỳ ý tưởng nào?
Tối ưu nhất là có sự kiện KeyDown chung kích hoạt (bất kể điều khiển hiện có tiêu điểm) và sau đó gọi phương thức KeyDown.
Đó là bán làm việc, bây giờ tôi nhận được sự kiện keydown nhưng khi tôi nhấn các nút, họ vẫn trở thành tập trung và sau đó nó dừng lại để làm việc trừ khi tôi nhấn phím mũi tên trên cho đến khi nó vòng qua tất cả và họ mất tập trung. – Patrick
Bạn đang bắt các sự kiện KeyDown "Keys.Left" và "Keys.Right" như thế nào? –
Tôi đã chỉnh sửa câu trả lời của mình để tham chiếu Phương thức IsInputKey –