Почему KeyPress умножается
public partial class GameForm : Form
{
static Player player = (Player)Game.sbj[0, Game.player_id];
public GameForm()
{
InitializeComponent();
Map.Build();
player = (Player)Game.sbj[0, Game.player_id];
}
public void Rndr()
{
label1.Location = new Point(player.x, player.y);
label1.Text = Map.Render();
}
private void plr_tmr_Tick(object sender, EventArgs e)
{
this.KeyPress += player.Move;
}
private void rndr_tmr_Tick(object sender, EventArgs e)
{
Rndr();
}
}
В таймере plr_tmr отправляются нажатия клавиатуры в player.Move()
public void Move(Object? sender, KeyPressEventArgs? e)
{
//Collision
Collision(1);
/////////// Movement
Console.WriteLine("клавиша нажата...");
// Right
if (e.KeyChar == 'd' && !right_col || e.KeyChar == '1')
{
x+=1;
Console.WriteLine("D-key!");
}
// Left
if (e.KeyChar == 'a' && !left_col)
{
--x;
Console.WriteLine("a-key!");
}
// Down
if (e.KeyChar == 's' && !down_col)
{
++y;
Console.WriteLine("S-key!");
}
//Up
if (e.KeyChar == 'w' && !up_col)
{
--y;
Console.WriteLine("W-key!");
}
И там почему-то нажатия удваиваются, вначале всё нормально, потом за нажатие начинает писать в консоль множество например "W-key!" за раз, потом больше и больше. Даже если очень быстро нажать не зажимая.
Источник: Stack Overflow на русском