Zum Inhalt springen

[c#] ScrollBar über Keys ansprechen


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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]

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...