Witam, piszę prostą aplikację w C# za pomocą klawiszy strzałek mam przesuwać pictureBox1, na formie znajduje się też kilka labeli i buttonów.
Obsługa klawiszy wygląda mniejwięcej tak:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Down)
{
foreach (var item in listamap)
{
item.obraz.Top -= 10;
}
}
if (e.KeyCode == Keys.Up)
{
foreach (var item in listamap)
{
item.obraz.Top += 10;
}
}
if (e.KeyCode == Keys.Left)
{
foreach (var item in listamap)
{
item.obraz.Left += 10;
}
}
if (e.KeyCode == Keys.Right)
{
foreach (var item in listamap)
{
item.obraz.Left -= 10;
}
}
pictureBox1.Top = listamap[2].obraz.Top;
pictureBox1.Left = listamap[2].obraz.Left;
pictureBox1.Refresh();
}
i takie przesuwanie działa dopóki nie klikniemy w któregoś buttona. wtedy sterowanie klawiszami przestaje działać.
W internecie znalazłem inną metodę:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData.Equals(Keys.Escape))
{
Application.Exit();
}
return base.ProcessCmdKey(ref msg, keyData);
}
działa to dla np: escape, enter ale nie dla strzałek, ktoś potrafi rozwiązać ten problem?
Pozdrawiam
Chotkos