mikrocontroller.net

Forum: PC-Programmierung vb 2008 key down ereigniss


Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Chris ... (dechavue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Versuch zuerst mal die Eigenschaft KeyPreview der Form auf true zu 
setzten.

Falls das nicht klappt kannst du zusätzlich folgendes probieren:
    protected override bool IsInputKey(Keys key)
    {
        switch (key)
        {
           case Keys.Right:
           case Keys.Left:
               return true;
        }
        return base.IsInputKey(key);
    }
 
(Ist zwar C#, sollte aber in VB ganz ähnlich aussehen)

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gottfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Vielen Dank,das funktioniert.

Habe schon alles mögliche probiert und nichts klappte.

Nochmals vielen Dank.

gruss

Andy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.