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;
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 282598
Url: https://administrator.de/contentid/282598
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar
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