2014-05-18 2 views
0

VB.net 계산기 응용 프로그램을 만들었지 만 잘 작동하지만 5 + 7을 더하고 싶다고 말합니다. 그런 다음 응용 프로그램이 작동하면서 키보드에서 5를 누르면됩니다. 숫자 5가있는 버튼의 텍스트는 &5이지만 키보드에서 +를 누르면 작동하지 않습니다. 계산기에서 + button을 눌러야합니다.계산기 버튼을 누르지 않고 키보드 입력에서 계산기 입력 제공

내 추가 버튼이 클릭 이벤트를 처리하기 위해 설계 되었기 때문에 btn_add_Click으로 생각합니다.이 응용 프로그램을 만들 수있는 방법은 계산기의 버튼을 누르지 않고도 키보드의 키를 눌러서 수행 할 수있는 방법입니다. computation.Here의 내 코드 :

Imports System.Math 
Public Class Form1 
    Private isFirstExist As Boolean 
    Private inputOperator As String 
    Private secondNum As Decimal 
    Private firstNum As Decimal 
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCalc.TextChanged 

End Sub 

Private Sub btn_zero_Click(sender As System.Object, e As System.EventArgs) Handles btn_zero.Click 
    removeFrontZero(0) 

End Sub 

Private Sub btn_one_Click(sender As System.Object, e As System.EventArgs) Handles btn_one.Click 
    removeFrontZero(1) 
End Sub 

Private Sub btn_two_Click(sender As System.Object, e As System.EventArgs) Handles btn_two.Click 
    removeFrontZero(2) 
End Sub 



Private Sub btn_clear_Click(sender As System.Object, e As System.EventArgs) Handles btn_clear.Click 
    txtCalc.Clear() 
    txtCalc.Text = "0" 


End Sub 


'Remove zero which is at the start 
Public Sub removeFrontZero(ByVal digit As Integer) 
    If txtCalc.Text = "0" Then 
     txtCalc.Text = CStr(digit) 
    Else 
     txtCalc.Text &= digit 
    End If 
End Sub 

Private Sub btn_add_Click(sender As System.Object, e As System.EventArgs) Handles btn_add.Click 
    inputOperator = "+" 
    isFirst() 
End Sub 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    isFirstExist = False 
End Sub 

Private Sub btn_equal_Click(sender As System.Object, e As System.EventArgs) Handles btn_equal.Click 
    If isFirstExist Then 
     secondNum = CType(txtCalc.Text, Decimal) 
    End If 
    'Calculating the result 
    Dim result As Decimal = calculate(firstNum, secondNum, inputOperator) 
    txtCalc.Text = result.ToString() 
    isFirstExist = False 
End Sub 

Private Function calculate(ByVal num1 As Decimal, ByVal num2 As Decimal, ByVal inputOp As String) As Decimal 
    Dim output As Decimal 
    firstNum = num1 
    secondNum = num2 
    Select Case inputOp 
     Case "+" 
      output = num1 + num2 
     Case "-" 
      output = num1 - num2 

     Case "/" 
      Dim value As Decimal 
      Try 
       isFirst() 
       value = (num1/num2) 
      Catch ex As DivideByZeroException 
       MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK) 
      End Try 
      output = value 
     Case "*" 
      output = num1 * num2 
     Case "Mod" 
      output = (num1 Mod num2) 
     Case "^" 
      output = CDec(Math.Pow(num1, num2)) 


    End Select 
    Return output 

End Function 
Private Sub isFirst() 
    If isFirstExist = False Then 
     firstNum = CType(txtCalc.Text, Decimal) 
     isFirstExist = True 
     txtCalc.Text = "0" 
    End If 
End Sub 
+0

숫자 버튼으로했던 것과 똑같은 + 버튼 (즉, 키보드 가속기 만들기 +)을 사용하면 어떨까요? –

+0

하지만 그때 추가 작업이 수행되지 않습니다 –

답변

1

당신의 TextChanged에서, 사용자의 입력을 개최 텍스트 상자를 사용하거나 처리기 트랩을 운영자 키의 keyPressed 및 연산자를 표시하는 대신 기능을 실행하고 가정. 이 같은

뭔가 :

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCalc.KeyPress 
    If e.KeyChar = "+"c Then 
     inputOperator = "+" 
     isFirst() 
     e.Handled = True 
    End If 
End Sub 

false로 처리 연산자 세트를 표시합니다.

+0

예 텍스트 입력란을 사용하여 사용자 입력을 유지합니다. "Textchanged 또는 KeyPressed 핸들러에서 연산자 키를 트랩하고 함수를 실행하면 무슨 뜻인지 설명하십시오. 그것을 표시하는 대신. " –

+0

@sam_rox 샘플을 추가했습니다. – tinstaafl

+0

감사합니다. 작동합니다. 키 누르기와 같은 이벤트가 있는지 몰랐습니다. 아직 vb.net의 초보자입니다. –