2016-07-28 38 views
0

nennen habe ich zwei U-BooteWie eine Sub mit KeyEventArgs von einem anderen Sub

Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles KeyHook.KeyDown 

und

Private Sub Form1_KeyPressCaps(ByVal key As Object, e As KeyEventArgs) Handles Me.KeyDown 

    If e.KeyCode = Keys.CapsLock Then 
     If keyStCL = True Then 

      checkbutton_caps.Checked = False 
      checkbutton_caps.Image = My.Resources.Resource1.btn_ico_caps_off 
      'Image.FromFile("resources\btn_ico_caps_off.png") 
      keyStCL = False 

     ElseIf keyStCL = False Then 
      checkbutton_caps.Checked = True 
      checkbutton_caps.Image = My.Resources.Resource1.btn_ico_caps_on 
      'Image.FromFile("resources\btn_ico_caps_on.png") 
      keyStCL = True 

     End If 
    End If 
End Sub 

Ich möchte Form1_KeyPressCaps von kbHook_KeyDown nennen. Wie mache ich es.
Ich versuchte dies:

Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles KeyHook.KeyDown 
    Call Form1_KeyPressCaps(Key, New KeyEventArgs) 
End Sub 

Aber seine nicht funktioniert. Ich erhalte eine Fehlermeldung:

Argument not specified for parameter 'keyData' of 'Public Sub New(keyData As System.Windows.Forms.Keys)'.

+1

Was Sie ist verwirrend? keydata ist ein erforderlicher Parameter zum Erstellen einer KeyEventArgs-Instanz. der Fehler sagt so – Plutonix

+0

@Plutonix Form1_KeyPressCaps wird verwendet, um Key Down-Ereignis der Feststelltaste zu behandeln. Wie soll ich das Argument für Keydata angeben? – Xlam

+0

Übergeben Sie einfach die Variable 'Key' an Ihre neue' KeyEventArgs' Klasse. Sie sollten wissen, wie Sie Parameter/Argumente übergeben, da Sie dies bereits tun, wenn nicht, lesen Sie es weiter: [** Gewusst wie: Übergeben von Argumenten an eine Prozedur (Visual Basic) **] (https: // msdn .microsoft.com/de-de/library/3d4hzxt6.aspx). - Außerdem sollten Sie das Schlüsselwort "Call" entfernen. Es ist überflüssig. –

Antwort

1
Private Sub kbHook_KeyDown(ByVal Key As System.Windows.Forms.Keys) Handles KeyHook.KeyDown 
    Call Form1_KeyPressCaps(Key, New KeyEventArgs(Key)) 
End Sub