2009-07-24 5 views
2

여기 내 딜레마가 있습니다. 여기에 내가 가진이 코드입니다 :VB.NET에서 KeyDown을 처리하는 방법

지금은했습니다 경우 System.EventArgs '

'키 코드의 금주 모임 구성원이 아닌 '내가 Form1_KeyDown에 따라 본을 입력 할 때 지금

If e.KeyCode = Keys.A Then 
     TextBox1.AppendText("C, ") 
     PictureBox2.Visible = True 
     My.Computer.Audio.Play(My.Resources.C, AudioPlayMode.Background) 
    End If 

, 시각적 기본이 생각 전에이 코드 작업을 본 적이 있지만 여기에는 없습니다. 어떤 도움이 필요합니까?

여기에 전체 코드 : 당신 방법을 정의 EventArgse 선언하지만 수정 유형 KeyEventArgs의 매개 변수를 확인하는 것입니다 왜

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) 
    If e.KeyCode = Keys.A Then 
     TextBox1.AppendText("A, ") 
     PictureBox2.Visible = True 
     My.Computer.Audio.Play(My.Resources.C, AudioPlayMode.Background) 
    End If 
    If e.KeyCode = Keys.S Then 
     TextBox1.AppendText("C,") 
     PictureBox14.Visible = True 
     My.Computer.Audio.Play(My.Resources.D, AudioPlayMode.Background) 
    End If 
End Sub 
+0

당신이 (서브 선언 포함) 전체 이벤트 핸들러 메소드의 코드를 포함 할 수 있습니다 VB에서 일해야 하는가? –

답변

6

확실하지. EventArgs (자연)에는 KeyCode이라는 속성이 없지만 KeyEventArgs 속성이 포함되어 있기 때문입니다.

는 다음에 이벤트 핸들러 메서드 정의를 변경

: 당신의 방법은 잘못된있는 EventArgs를 사용하는 것처럼

Private Sub foo_KeyDown(sender As Object, e As KeyEventArgs) 
    If e.KeyCode = Keys.A Then 
     TextBox1.AppendText("A, ") 
     PictureBox2.Visible = True 
     My.Computer.Audio.Play(My.Resources.C, AudioPlayMode.Background) 
    ElseIf e.KeyCode = Keys.S Then 
     TextBox1.AppendText("C,") 
     PictureBox14.Visible = True 
     My.Computer.Audio.Play(My.Resources.D, AudioPlayMode.Background) 
    End If 
End Sub 
+1

그리고 가장 중요한 것은 KeyDown 이벤트의 서명 부분입니다 –

+0

@Fredrik : 네, 그걸 보는 더 개념적인 방법입니다. – Noldorin

+0

TextBox1과 PictureBox2 btw보다 컨트롤 이름을 잘 지정하는 것이 좋습니다. – Noldorin

0

그것은 소리. Control.KeyDown 이벤트는이를 System.Windows.Forms.KeyEventArgs로 보냅니다. 그래서 코드는 때때로 당신이 아래에 유사한 전체 개체 형식을 제공해야 내가 찾은

Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) 
    // code here 
End Sub 
+0

음, 시스템이 더 이상 오류로 등록하지 않았지만 이제는 사운드가 재생되지 않습니다. –

+0

Unfortuantely VB.Net 내 강한 소송은 아니지만 My.Resources.C에서 실제 경로로 위치 매개 변수를 변경하고 해당 재생할 경우보십시오. 나는 My.Resources.C 파일의 위치 또는 바이트 배열 가정? – Joshua

0

로 읽어야

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
MsgBox(e.KeyCode.ToString()) 'Message what the keycode 
If (e.KeyCode = Keys.A) Then 
    MsgBox("e.KeyCode = Keys.A") 'Message that I've found the A 
    TextBox1.AppendText("C, ") 
    PictureBox2.Visible = True 
    My.Computer.Audio.Play(My.Resources.C, AudioPlayMode.Background) 
End If 

당신이이 테스트를 시도 해 봤나 최종 하위 아래의 텍스트 상자 (예 : 텍스트 상자의 이름은 TextBoxKeyTest)와 비슷한 형식의 텍스트 상자에?

Private Sub TextBoxKeyTest_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBoxKeyTest.KeyDown 
    MsgBox(e.KeyCode.ToString())'Message what the keycode 
    If (e.KeyCode = Keys.A) Then 
     MsgBox("e.KeyCode = Keys.A")'Message that I've found the A 
     TextBox1.AppendText("C, ") 
     PictureBox2.Visible = True 
     My.Computer.Audio.Play(My.Resources.C, AudioPlayMode.Background) 
    End If 
End Sub 
+0

@ Quest4Denali, 아니요. 나는 그것을 시험해 볼 것이다. –

0

이 2010

Private Sub cmdWiden_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp 
     If e.KeyCode = Keys.Up Then Me.Top = Me.Top - 5 
     If e.KeyCode = Keys.Down Then Me.Top = Me.Top + 5 
     If e.KeyCode = Keys.Left Then Me.Left = Me.Left - 5 
     If e.KeyCode = Keys.Right Then Me.Left = Me.Left + 5 
End Sub 
+0

이 대답의 코드에 대해 코드 서식을 사용할 수 있습니까? –

관련 문제