.net 继续用计算器计算

.net 继续用计算器计算,.net,vb.net,calculator,.net,Vb.net,Calculator,我正在用VB.Net制作一个简单的计算器 我正在扩展代码,因为我希望这样做,如果你这样做的话 input(8) input(+) input(2) input(=) result(10) 但是,如果我按下除法按钮和其他数字,我希望它是这样的: previousResult(10) input(/) input(5) input(=) newResult(2) 如果我不经常按equal运算符继续计算 它还应该给出一个正确的值 input(8) input(+) input(2) input(

我正在用VB.Net制作一个简单的计算器

我正在扩展代码,因为我希望这样做,如果你这样做的话

input(8) input(+) input(2) input(=) result(10)
但是,如果我按下除法按钮和其他数字,我希望它是这样的:

 previousResult(10) input(/) input(5) input(=) newResult(2)
如果我不经常按equal运算符继续计算 它还应该给出一个正确的值

input(8) input(+) input(2) input(/) input(2) input(+) input(5) input(=) result(10)
无论计算一个新操作多少次,它都应该始终保持运行。 无论我单击哪个操作符(+、-、/、*),它都应该始终保持运行

我已经做了很多变量和函数,整个事情都一团糟。 我的第一个计算将适用于案例+

但另一个例子+结果是错误的…这是我的代码:

Option Strict On
Option Infer Off
Option Explicit On


    Public Class SimpleCalculatorForm

    #Region "FormLoad"

    Private Sub SimpleCalculatorForm_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
        Dim decimalSeperator As Char = Convert.ToChar(Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)
        DecimalSeperatorButton.Text = decimalSeperator

        ResultTextbox.Text = "0"
    End Sub
#End Region

#Region "Methods"


    Private Sub RemoveMinusBeforeValue()
        For Each letter As String In ResultTextbox.Text
            Dim pos As Integer = pos + 1
            If letter = "-" Then
                ResultTextbox.Text = ResultTextbox.Text.Substring(pos, ResultTextbox.Text.Length - pos)
                Exit For
            End If
        Next
    End Sub

    Public Function ThereIsAnValue() As Boolean
        Dim x As Boolean
        For Each number As String In ResultTextbox.Text
            If number <> "0" Then
                x = True
                Exit For
            Else : x = False
            End If
        Next
        Return x
    End Function
    Public Function TextboxContainsDecimalSeparator() As Boolean
        Dim x As Boolean
        For Each letter As String In ResultTextbox.Text
            If letter = "," Then
                x = True
                Exit For
            Else : x = False
            End If
        Next
        Return x
    End Function
    Public Function TheValueIsPositive() As Boolean
        Dim x As Boolean
        For Each letter As String In ResultTextbox.Text
            If letter = "-" Then
                x = False
                Exit For
            Else : x = True
            End If
        Next

        Return x
    End Function

    Public Sub ContainsZero(number As String)
        If ResultTextbox.Text = "0" OrElse ResultTextbox.Text = "-0" Then
            ResultTextbox.Text = number
        ElseIf ResultTextbox.Text = "0.0" AndAlso number = "0" Then
            ResultTextbox.Text = number

        Else : ResultTextbox.Text &= number
        End If
    End Sub

#End Region


#Region "NumericButtons"

    Private Sub Numeric_Buttons_Click(sender As Object, e As EventArgs) Handles ZeroButton.Click, OneButton.Click, TwoButton.Click, ThreeButton.Click, _
                                                                            FourButton.Click, FiveButton.Click, SixButton.Click, SevenButton.Click, _
                                                                                EightButton.Click, NineButton.Click

        Dim x As Button = CType(sender, Button)
        Dim button As String = x.Text
        ContainsZero(button)

        If _Calculatevalue1 = Nothing Then
            _Calculatevalue1 &= button
        Else
            _Calculatevalue2 &= button
        End If


    End Sub



    Private Sub DecimalSeperatorButton_Click(sender As Object, e As EventArgs) Handles DecimalSeperatorButton.Click
        Dim x As Button = CType(sender, Button)
        Dim button As String = x.Text

        If TextboxContainsDecimalSeparator() = True Then
            MessageBox.Show("You cannot enter 2 times the ',' sign")
        Else : ResultTextbox.Text &= button
        End If


    End Sub

#End Region


#Region "OperatorButtons"


    Private Sub ClearButton_Click(sender As Object, e As EventArgs) Handles ClearButton.Click

        If ResultTextbox.Text = "0" Then
            MessageBox.Show("The field is already empty")
        ElseIf ResultTextbox.Text <> "0" Then
            ResultTextbox.Text = "0"
            _Calculatevalue1 = Nothing
            _Calculatevalue2 = Nothing
            _Calculatevalue3 = Nothing



        End If


    End Sub

    Private Sub NegationButton_Click(sender As Object, e As EventArgs) Handles NegationButton.Click

        If TheValueIsPositive() Then
            ResultTextbox.Text = "-" & ResultTextbox.Text
            _Calculatevalue3 = ResultTextbox.Text
        Else : RemoveMinusBeforeValue()
            _Calculatevalue3 = ResultTextbox.Text

        End If
    End Sub

    Private _Calculatevalue1 As String
    Private _Calculatevalue2 As String
    Private _TheFinalResult As Decimal
    Private _CurrentOperator As String
    Private _Calculatevalue3 As String


    Private Sub Operators_Buttons_Click(sender As Object, e As EventArgs) Handles AdditionButton.Click, SubtractionButton.Click, _
                                                                                MultiplicationButton.Click, DivisionButton.Click
        Dim x As Button = CType(sender, Button)
        Dim button As String = x.Text

        _CurrentOperator = button



        If _Calculatevalue1 = Nothing AndAlso ThereIsAnValue() = False Then
            MessageBox.Show("Give in a value before u use an operator")


            ResultTextbox.Text = "0"

        Else
            If ThereIsAnValue() Then

                If _Calculatevalue3 = Nothing Then
                    Select Case button

                        Case "+"
                            _Calculatevalue3 = Convert.ToString(Convert.ToDecimal(_Calculatevalue1) + Convert.ToDecimal(_Calculatevalue2))
                            ResultTextbox.Text = "0"


                    End Select

                Else
                    Select Case button

                        Case "+"
                            _Calculatevalue3 = Convert.ToString(Convert.ToDecimal(_Calculatevalue3) + Convert.ToDecimal(_TheFinalResult))
                            ResultTextbox.Text = "0"

                    End Select
                End If
            End If
        End If
    End Sub

    Private Sub EqualsButton_Click(sender As Object, e As EventArgs) Handles EqualsButton.Click
        Select Case _CurrentOperator

            Case "+"
                _TheFinalResult = Convert.ToDecimal(_Calculatevalue1) + Convert.ToDecimal(_Calculatevalue2)
                ResultTextbox.Text = _TheFinalResult.ToString
        End Select
        _Calculatevalue1 = Nothing

    End Sub
#End Region
End Class
选项严格打开
选项推断
选项显式打开
公共类SimpleCalculator表单
#区域“FormLoad”
私有子SimpleCalculatorForm_Load(ByVal发送方作为System.Object,ByVal e作为EventArgs)处理MyBase.Load
Dim DecimalSeparator As Char=Convert.ToChar(Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)
DecimalSeparatorButton.Text=小数分隔符
ResultTextbox.Text=“0”
端接头
#末端区域
#区域“方法”
私有子RemoveMinusBeforeValue()
对于ResultTextbox.Text中作为字符串的每个字母
Dim pos作为整数=pos+1
如果字母=“-”则
ResultTextbox.Text=ResultTextbox.Text.Substring(pos,ResultTextbox.Text.Length-pos)
退出
如果结束
下一个
端接头
公共函数TheResainValue()为布尔值
将x作为布尔值
对于ResultTextbox.Text中的字符串形式的每个数字
如果数字为“0”,则
x=真
退出
否则:x=False
如果结束
下一个
返回x
端函数
公共函数textboxContainesCimalSeparator()为布尔值
将x作为布尔值
对于ResultTextbox.Text中作为字符串的每个字母
如果字母=“,”则
x=真
退出
否则:x=False
如果结束
下一个
返回x
端函数
公共函数TheValueIsPositive()为布尔值
将x作为布尔值
对于ResultTextbox.Text中作为字符串的每个字母
如果字母=“-”则
x=假
退出
否则:x=True
如果结束
下一个
返回x
端函数
公共子容器(编号为字符串)
如果ResultTextbox.Text=“0”或lse ResultTextbox.Text=“-0”,则
ResultTextbox.Text=number
ElseIf ResultTextbox.Text=“0.0”和also number=“0”然后
ResultTextbox.Text=number
Else:ResultTextbox.Text&=number
如果结束
端接头
#末端区域
#区域“数字按钮”
私有子数字按钮单击(发送者作为对象,e作为事件参数)处理零按钮。单击,一个按钮。单击,两个按钮。单击,三个按钮。单击_
四个按钮。点击,五个按钮。点击,六个按钮。点击,七个按钮。点击_
八个按钮。点击,九个按钮。点击
Dim x As Button=CType(发送器,按钮)
尺寸按钮为字符串=x。文本
ContainsZero(按钮)
如果_Calculatevalue1=无,则
_Calculatevalue1&=按钮
其他的
_Calculatevalue2&=按钮
如果结束
端接头
私有次小数分隔按钮(发送者作为对象,e作为事件参数)处理小数分隔按钮。单击
Dim x As Button=CType(发送器,按钮)
尺寸按钮为字符串=x。文本
如果textboxcontainsdecimalsepator()=True,则
MessageBox.Show(“您不能输入两次“,”符号”)
Else:ResultTextbox.Text&=按钮
如果结束
端接头
#末端区域
#区域“运算符按钮”
私有子ClearButton\u单击(发送者作为对象,e作为事件参数)处理ClearButton。单击
如果ResultTextbox.Text=“0”,则
MessageBox.Show(“该字段已为空”)
ElseIf ResultTextbox.Text“0”然后
ResultTextbox.Text=“0”
_Calculatevalue1=无
_Calculatevalue2=无
_Calculatevalue3=无
如果结束
端接头
私有子否定按钮\单击(发送者作为对象,e作为事件参数)处理否定按钮。单击
如果值为positive(),则
ResultTextbox.Text=“-”&ResultTextbox.Text
_Calculatevalue3=ResultTextbox.Text
Else:RemoveMinusBeforeValue()
_Calculatevalue3=ResultTextbox.Text
如果结束
端接头
Private\u Calculatevalue1作为字符串
Private _Calculatevalue2作为字符串
Private _最终结果为十进制
Private _CurrentOperator作为字符串
Private\u Calculatevalue3作为字符串
私有子运算符\u按钮\u单击(发件人作为对象,e作为事件参数)处理AdditionButton。单击,减法按钮。单击_
乘法按钮。单击,除法按钮。单击
Dim x As Button=CType(发送器,按钮)
尺寸按钮为字符串=x。文本
_CurrentOperator=按钮
如果_Calculatevalue1=Nothing,并且其值()也为False,则
Show(“在使用运算符之前输入值”)
ResultTextbox.Text=“0”
其他的
如果存在nValue(),则
如果_Calculatevalue3=无,则
选择案例按钮
大小写“+”
_Calculatevalue3=Convert.ToString(Convert.ToDecimal(_Calculatevalue1)+Convert.ToDecimal(_Calculatevalue2))
ResultTextbox.Text=“0”
Public Class SimpleCalculatorForm

 Friend CurrentResult As Integer        ' ??? doesnt look like you care
                                        ' much about datatpes
#Region "FormLoad"