2013-08-30 4 views
0

저는 기본 계산기를 만들려고합니다. 번호는 0-9와 모든 수학 기호로되어 있습니다. 내 키보드 (숫자 키패드) 버튼을 연결하고 싶습니다. 검색을 한 후 'if'문으로 몇 가지 예를 보았습니다. 선택 사례로이 작업을 수행 할 수 있습니까? 키보드 입력을 처리하는 데 가장 적합한 키 이벤트는 무엇입니까? KeyUp, KeyDown 또는 KeyPress? KeyPress에서 '='은 유효한 연산자가 아닙니다.선택 케이스가있는 키보드 입력

답변

1

이것은 확실히 Select Case으로 가능합니다.
가장 좋은 키 이벤트는 아마도 KeyDown이므로 사용자가 키를 누르면 바로 버튼이 클릭됩니다. (당신이 KeyUp을 사용하는 경우, 그것은 그들이 기대하지 않을 수있는, 그들 키를 놓을 때까지 기다린 것입니다.)
이 보일 수 있습니다 방법의 예 :

Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown 
    Select Case e.KeyCode 
     Case Keys.NumPad1 
      Button1.PerformClick() 
     Case Keys.NumPad2 
      Button2.PerformClick() 
     Case Keys.NumPad3 
      Button3.PerformClick() 
     'Continue adding other keys here' 
    End Select 
End Sub 

당신은 변경해야됩니다 코드와 일치하는 버튼의 이름.
KeyDown 이벤트가 발생하도록 양식의 KeyPreview 속성을 True으로 설정해야 할 수도 있습니다. 디자이너에서이 작업을 수행 할 수 있습니다.

+0

내가 'Button1_Click'이벤트를 바로 호출하거나 Button1.PerformClick()을 사용하는 것이 더 좋습니까? – Vahx

+0

'PerformClick()'이 더 좋습니다! – OneFineDay

+0

'Button1_Click '에 대한 매개 변수'보낸 사람 '과'e '가'Form1_KeyDown'에 대한 것과 다르기 때문에'PerformClick()'을 사용해야합니다. – camerondm9

0

폼의 속성에서 KeyPreview가 설정되어 있는지 확인하십시오.

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    Select Case e.KeyCode 
     Case Keys.NumPad0 
      btn0.PerformClick() 
     Case Keys.NumPad1 
      btn1.PerformClick() 
     Case Keys.NumPad2 
      btn2.PerformClick() 
     Case Keys.NumPad3 
      btn3.PerformClick() 
     Case Keys.NumPad4 
      btn4.PerformClick() 
     Case Keys.NumPad5 
      btn5.PerformClick() 
     Case Keys.NumPad6 
      btn6.PerformClick() 
     Case Keys.NumPad7 
      btn7.PerformClick() 
     Case Keys.NumPad8 
      btn8.PerformClick() 
     Case Keys.NumPad9 
      btn9.PerformClick() 
    End Select 
    End Sub