Hallo,ich sitze hier schon einige Zeit an einem Problem und kann es nicht lösen.Ich möchte mit den Pfeiltasten eine Picturebox auf der Form verschieben.Klappt alles.Kommt ein Button mit auf die Form,klappts nicht mehr.Unter Form1Load habe ich Me.KeyPreview = True eingetragen. Ansonsten siehst so aus: Private Sub Form1_KeyDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then links() ElseIf e.KeyCode = Keys.Right Then rechts() End If e.Handled = True End Sub Sub links() test.Left = test.Left - 50 End Sub Sub rechts() test.Left = test.Left + 50 End Sub Wäre super,wenn mir jemand helfen könnte. gruss andy
Hi, Versuch zuerst mal die Eigenschaft KeyPreview der Form auf true zu setzten. Falls das nicht klappt kannst du zusätzlich folgendes probieren:
1 | protected override bool IsInputKey(Keys key) |
2 | {
|
3 | switch (key) |
4 | {
|
5 | case Keys.Right: |
6 | case Keys.Left: |
7 | return true; |
8 | }
|
9 | return base.IsInputKey(key); |
10 | }
|
(Ist zwar C#, sollte aber in VB ganz ähnlich aussehen)
Public Class Form1 Sub links() Me.PictureBox1.Left = Me.PictureBox1.Left - 10 End Sub Sub rechts() Me.PictureBox1.Left = Me.PictureBox1.Left + 10 End Sub Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Left Then links() ElseIf e.KeyCode = Keys.Right Then rechts() End If e.Handled = True End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.KeyPreview = True End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End Sub End Class Geht doch Gruß
Hallo, danke für die antworten. Das ist ja das seltsame.Ich habe es jetzt genau wie juppi gemacht,klappt nicht.Die picturebox bewegt sich nicht.Lösche ich den Button,klappts einwandfrei. Kann es daran liegen,das ich die Picturebox zur Laufzeit erzeuge? gruss Andy
Ein Beispiel wenn man die Fokusumschaltung nicht braucht: Public Class Form1 Private WithEvents PB1 As New PictureBox With {.BackColor = Color.Blue, .Parent = Me} Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load PB1.SetBounds(100, 100, 32, 32) Me.KeyPreview = True End Sub Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean Select Case keyData Case Keys.Left : PB1.Left -= 10 Case Keys.Right : PB1.Left += 10 End Select End Function End Class Gottfried
Hallo, Vielen Dank,das funktioniert. Habe schon alles mögliche probiert und nichts klappte. Nochmals vielen Dank. gruss Andy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.