Note that there are some explanatory texts on larger screens.

plurals
  1. POC# trying to capture the KeyDown event on a form
    text
    copied!<p>I am creating a small game, the game is printed onto a panel on a windows form. Now i want to capture the keydown event to see if its the arrow keys that has been pressed, the problem however is that i can't seem to capture it.</p> <p>Let me explain, on the form i have 4 buttons and various other controls and if the user for instance press one of the buttons (to trigger a game event) then the button has focus and i can't capture the movements with the arrow keys.</p> <p>I tried something like</p> <pre><code>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()); } } </code></pre> <p>and then when the form key down event was pressed, i used this</p> <pre><code>private void MainForm_KeyDown(object sender, KeyEventArgs e) { KeyDown(e); } </code></pre> <p>I also added keydown for the buttons and the various other controls on the windows form, but i am not getting any response back. I have setup a breakpoint inside the function to see if it's being called, but that breakpoint never triggers?</p> <p>Any ideas?</p> <p>The most optimal was to have a general KeyDown event that triggers (regardless of what control that currently has focus) and then calls the KeyDown method.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload