VB.NET语言 利用 TextBox 和 Button 实现简易计算器升级版

VB.NET阿木 发布于 2025-05-28 16 次阅读


VB.NET简易计算器升级版实现与代码解析

计算器是日常生活中常用的工具之一,它可以帮助我们快速完成各种数学运算。在VB.NET中,我们可以利用TextBox和Button控件来创建一个简易的计算器。本文将围绕这一主题,详细解析如何使用VB.NET语言实现一个功能更丰富的计算器升级版。

环境准备

在开始编写代码之前,我们需要准备以下环境:

1. Visual Studio 2019或更高版本
2. .NET Framework 4.8或更高版本

设计界面

我们需要设计计算器的界面。在Visual Studio中,创建一个新的VB.NET Windows Forms Application项目。然后,在Form上添加以下控件:

- TextBox:用于显示计算结果
- Button(多个):用于输入数字和运算符

以下是界面布局的示例:


+-----------------------+
| TextBox |
| |
| 7 8 9 / |
| 4 5 6 |
| 1 2 3 - |
| 0 . = + |
+-----------------------+

代码实现

1. 添加控件

在Form的代码文件中,首先添加TextBox和Button控件:

vb
Public Class CalculatorForm
Private Sub New()
' 此调用是设计器所必需的。
InitializeComponent()

' 在此之下添加任何初始化。
Me.TextBoxResult = New TextBox()
Me.TextBoxResult.Location = New System.Drawing.Point(12, 12)
Me.TextBoxResult.Size = New System.Drawing.Size(260, 20)

' 添加Button控件
Dim btn As Button
For i As Integer = 0 To 9
btn = New Button()
btn.Text = CStr(i)
btn.Location = New System.Drawing.Point(12 + (i Mod 3) 70, 40 + (i 3) 30)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)
Next

btn = New Button()
btn.Text = "/"
btn.Location = New System.Drawing.Point(12, 70)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = ""
btn.Location = New System.Drawing.Point(82, 70)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "-"
btn.Location = New System.Drawing.Point(152, 70)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "+"
btn.Location = New System.Drawing.Point(222, 70)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "="
btn.Location = New System.Drawing.Point(12, 100)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "."
btn.Location = New System.Drawing.Point(82, 100)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "C"
btn.Location = New System.Drawing.Point(152, 100)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)

btn = New Button()
btn.Text = "CE"
btn.Location = New System.Drawing.Point(222, 100)
AddHandler btn.Click, AddressOf btn_Click
Me.Controls.Add(btn)
End Sub
End Class

2. 实现按钮点击事件

接下来,我们需要实现按钮点击事件,以便在TextBox中显示相应的数字或运算符:

vb
Private Sub btn_Click(sender As Object, e As EventArgs)
Dim btn As Button = sender
If btn.Text = "=" Then
' 计算结果
Try
Dim result As Double = EvaluateExpression(Me.TextBoxResult.Text)
Me.TextBoxResult.Text = CStr(result)
Catch ex As Exception
Me.TextBoxResult.Text = "Error"
End Try
ElseIf btn.Text = "C" Then
' 清除文本框
Me.TextBoxResult.Clear()
ElseIf btn.Text = "CE" Then
' 清除文本框并重置计算器状态
Me.TextBoxResult.Clear()
' 重置计算器状态
' ...
Else
' 输入数字或运算符
Me.TextBoxResult.Text &= btn.Text
End If
End Sub

3. 实现表达式计算

为了计算表达式,我们需要实现一个函数来解析和计算字符串形式的数学表达式。以下是一个简单的实现:

vb
Private Function EvaluateExpression(expression As String) As Double
' 使用正则表达式分割表达式
Dim tokens As String() = Regex.Split(expression, "s+")
Dim stack As New Stack(Of Double)
Dim operatorStack As New Stack(Of Char)

For Each token As String In tokens
If Double.TryParse(token, stack.Peek()) Then
' 数字
stack.Push(Double.Parse(token))
ElseIf token = "+" OrElse token = "-" OrElse token = "" OrElse token = "/" Then
' 运算符
While operatorStack.Count > 0 AndAlso GetPrecedence(operatorStack.Peek()) >= GetPrecedence(token(0))
stack.Push(PerformOperation(operatorStack.Pop(), stack.Pop(), stack.Pop()))
End While
operatorStack.Push(token(0))
End If
Next

While operatorStack.Count > 0
stack.Push(PerformOperation(operatorStack.Pop(), stack.Pop(), stack.Pop()))
End While

Return stack.Pop()
End Function

Private Function GetPrecedence(op As Char) As Integer
Select Case op
Case "+", "-"
Return 1
Case "", "/"
Return 2
Case Else
Return 0
End Select
End Function

Private Function PerformOperation(op As Char, secondOperand As Double, firstOperand As Double) As Double
Select Case op
Case "+"
Return firstOperand + secondOperand
Case "-"
Return firstOperand - secondOperand
Case ""
Return firstOperand secondOperand
Case "/"
Return firstOperand / secondOperand
Case Else
Throw New ArgumentException("Invalid operator")
End Select
End Function

总结

通过以上步骤,我们使用VB.NET语言和Windows Forms控件实现了一个简易计算器升级版。这个计算器可以处理基本的数学运算,包括加、减、乘、除和括号。这只是一个简单的示例,实际应用中可能需要更多的功能和错误处理。

在实际开发中,我们可以进一步优化代码,例如添加更多的数学函数、支持更复杂的表达式、优化用户界面等。希望本文能帮助你更好地理解VB.NET编程和Windows Forms开发。