CSharp Keydown Problem
[Programmieranfänger]
Guten Morgen,
bei folgendem Programm soll er auf Pfeiltasten reagieren wenn ein gewisses Panel zu sehen ist und sich X, Y koordinatentechnisch durch die Welt bewegen.
Mein Problem ist aber dass er nicht auf Pfeiltasten reagiert nur auf andere Tastatur eingaben.
Habe auch schon gelesen das mit Pfeiltasten ein bisschen anders sein soll und man lieber PreviewKeyDown verwenden sollte aber dafür brauch man
ja ein Objekt das fokussierst werden kann. Fokussieren der Form oder des Panels ist nicht möglich oder?
Gibt es eine Möglichkeit meine Quelltext mit geringen Änderungen auf die Pfeiltasten reagieren zu lassen oder ganz falsch an die Sache gegangen?
__________________________________________________________________________________________________________________________________________________
Guten Morgen,
bei folgendem Programm soll er auf Pfeiltasten reagieren wenn ein gewisses Panel zu sehen ist und sich X, Y koordinatentechnisch durch die Welt bewegen.
Mein Problem ist aber dass er nicht auf Pfeiltasten reagiert nur auf andere Tastatur eingaben.
Habe auch schon gelesen das mit Pfeiltasten ein bisschen anders sein soll und man lieber PreviewKeyDown verwenden sollte aber dafür brauch man
ja ein Objekt das fokussierst werden kann. Fokussieren der Form oder des Panels ist nicht möglich oder?
Gibt es eine Möglichkeit meine Quelltext mit geringen Änderungen auf die Pfeiltasten reagieren zu lassen oder ganz falsch an die Sache gegangen?
__________________________________________________________________________________________________________________________________________________
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (this.Controls["panel" + "1"].Visible == true & _load == true)
{
MessageBox.Show("Event \"panel_KeyDown\" konnte aufgerufen werden");
switch (e.KeyCode)
{
case Keys.Down:
for (int i = 0; i < 1; i++)
{
if (((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Height < 740)
{
((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Height = ((PictureBox)this.Controls["panel" + "1"].Controls["sh" + i.ToString()]).Height + 10;
}
}
break;
case Keys.Up:
for (int i = 0; i < 1; i++)
{
if (((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Height > 10)
{
((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Height = ((PictureBox)this.Controls["panel" + "1"].Controls["sh" + i.ToString()]).Height - 10;
}
}
break;
case Keys.Right:
for (int i = 0; i < 1; i++)
{
if (((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Width < 1160)
{
((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Width = ((PictureBox)this.Controls["panel" + "1"].Controls["sh" + i.ToString()]).Width + 10;
}
}
break;
case Keys.Left:
for (int i = 0; i < 1; i++)
{
if (((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Width > 10)
{
((PictureBox)this.Controls["panel" + "1"].Controls["sp" + i.ToString()]).Width = ((PictureBox)this.Controls["panel" + "1"].Controls["sh" + i.ToString()]).Width - 10;
}
}
break;
}
}
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 282598
Url: https://administrator.de/contentid/282598
Printed on: April 19, 2024 at 21:04 o'clock
2 Comments
Latest comment
if (this.Controls["panel" + "1"].Visible == true & _load == true)
Fällt mir jetzt so auf Anhieb direkt ins Auge : Zeile 3 ist der UND Operator falsch, der muss doppelt sein &&Und das Event sollte auf dem Control registriert sein in dem du darauf reagieren willst. Zusätzlich noch die Eigenschaft KeyPreview der Form auf true setzen. Und im PreviewKeyDown Event sollte man die Pfeiltasten as Input-Key registrieren, damit sie überhaupt im KeyDown-Event landen.
e.IsInputKey = true;
Gruß grexit