![]() |
#2
xiangyue05102016-05-11 20:10
虽然不清楚你是哪个按钮来实现连加,按照你的代码只有case 4代表+键执行了计算。
我之前做过一个计算器的练习,是和一般计算器一样的, 1 + 1, 一直按=, 每次+1。(我们那个时候拿这个比手速,无聊吧 ![]() 我是这样实现的 控件(数组) 1~9: CommandNum 数字按钮 +-*/: CommandOpr 运算符按钮 = : CommandEqual 求解按钮 全局变量声明 ![]() Dim Val1, Val2 as single '第一、二运算数 Dim OperStr as integer '运算符,index=0~3分别为+ - * / Dim NewNum as boolean '是否新的输入 Dim FinishOpr '是否计算完成 全局变量初始化,启动时或者按下CE之后 ![]() OperStr =1 ' NewNum =True ' FinishOpr=True 下面部分代码用中文写了,意思你明白就好 点击数字按钮 ![]() If NewNum=True then TextNum.text=TextNum.text & (Index+1) '当显示的是上次计算结果时,输入的是新数字 NewNum=false ' else TextNum.text=TextNum.text & (Index+1) End if 点击运算符按钮 ![]() if trim(TextNum.text) ="" then Exist sub '输入不为空的时候执行, 为空的时候不执行任何 if NewNum then Exist sub '避免连续按,如1++ if FinishOpr=true then ' 前面没有未完成的运算,如按1 按+, 按下+ 之后, val1=csng(TextNum.text) '输入传递给第一运算数 OperStr=index '保存运算符号 FinishOpr=false ' Elseif FinishOpr=false then ' 前面有未完成的运算,如按1 按+, 按1 按+, 第二次按下+ 室,前面有1+1了,必须先做一个计算 val2=csng(TextNum.text) '输入传递给第2运算数 TextNum.text=FunctionOper(val1,val2,OperStr) ’ 根据之前的输入和运算符计算,并显示 val1=csng(TextNum.text) '计算结果传递给第一运算数 OperNum=1 End if NewNum=True ' 按下任意运算符之后,再按数字按钮就是新的数字 等于按钮 ![]() if newnum then '如果显示的是上次计算的额结果 ’沿用原来的Val1, val2相加, 按1 按+, 按1, 一直按= 就是1+1+1+1+1+1+1+1的效果 Elseif newnum =false then '如果显示的是手动输入的数字 val2=csng(TextNum.text) '输入传递给第2运算数 End if TextNum.text=FunctionOper(val1,val2,OperStr) ’ FunctionOper 这个就简单了,不用我写了吧 |
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
Text1.Text = Text1.Text & "1"
Case 1
Text1.Text = Text1.Text & "2"
Case 2
Text1.Text = Text1.Text & "3"
Case 3
Text1.Text = Text1.Text & "4"
Case 4
If sum <> "" Then
Text1.Text = Val(sum) + Val(Text1.Text)
Else
sum = Text1.Text
Text1.Text = ""
End If
End Select
End Sub
想实现连加始终要多单击一次加号键,请问一下如何改正(case 4代表+键)