23. April 200917 j 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?
23. April 200917 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.