Zum Inhalt springen

[c#] ScrollBar über Keys ansprechen


shockSTAR

Empfohlene Beiträge

Hallo.

Ich möchte nur ein kleines Rechteck über die Form flitzen lassen. Daher habe ich die x und y Koordinaten per ScrollBar.Value verändern lassen. Nun wollte ich dass man die ScrollBars auch per Key.Down etc. bedienen kann, was meiner Ansicht nach auch eine Bewegung des Rechtecks zur Folge haben sollte.

Nun habe ich folgendes Problem:

Das Rechteck bewegt sich nur nach links und rechts. Key.Down und Key.Right verschieben nach rechts und Up und Left nach links.


private void hScrollBar1_ValueChanged(object sender, EventArgs e)
{
Graphics grfx = this.CreateGraphics();
grfx.Clear(System.Drawing.SystemColors.Control);
SolidBrush brush = new SolidBrush(Color.Black);
int x;
int y;
x = hScrollBar1.Value;
y = vScrollBar1.Value;
grfx.FillRectangle(brush, x, y, 5, 5);
}

private void vScrollBar1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
vScrollBar1.Value += 1;
}
if (e.KeyCode == Keys.Down)
{
vScrollBar1.Value -= 1;
}
}
private void hScrollBar1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{
hScrollBar1.Value += 1;
}
if (e.KeyCode == Keys.Left)
{
hScrollBar1.Value -= 1;
}
}
[/PHP]

Warum verschiebt sich die Grafik nur nach rechts und links?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok jetzt kam mir die Lösung. Habe vergessen dass die ScrollBar nur reagiert wenn der Fokus drauf ist. Da dieser auf der hScrollBar war und diese std. über Links und Rechts reagiert hab ich nen Knoten im Kopf bekommen.


private void vScrollBar1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{vScrollBar1.Value -= 1;}
if (e.KeyCode == Keys.Down)
{vScrollBar1.Value += 1;}
if (e.KeyCode == Keys.Right)
{hScrollBar1.Focus();}
if (e.KeyCode == Keys.Left)
{hScrollBar1.Focus();}
}
private void hScrollBar1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right)
{hScrollBar1.Value += 1;}
if (e.KeyCode == Keys.Left)
{hScrollBar1.Value -= 1;}
if (e.KeyCode == Keys.Up)
{vScrollBar1.Focus();}
if (e.KeyCode == Keys.Down)
{vScrollBar1.Focus();}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...