虽然不清楚你是哪个按钮来实现连加,按照你的代码只有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 这个就简单了,不用我写了吧