📄 formmain.vb
字号:
'btNum7
'
Me.btNum7.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btNum7.ForeColor = System.Drawing.Color.Blue
Me.btNum7.Location = New System.Drawing.Point(8, 72)
Me.btNum7.Name = "btNum7"
Me.btNum7.Size = New System.Drawing.Size(32, 23)
Me.btNum7.TabIndex = 77
Me.btNum7.TabStop = False
Me.btNum7.Text = "7"
'
'tResult
'
Me.tResult.Location = New System.Drawing.Point(8, 8)
Me.tResult.Name = "tResult"
Me.tResult.ReadOnly = True
Me.tResult.Size = New System.Drawing.Size(192, 21)
Me.tResult.TabIndex = 66
Me.tResult.TabStop = False
Me.tResult.Text = ""
Me.tResult.TextAlign = System.Windows.Forms.HorizontalAlignment.Right
'
'pKey
'
Me.pKey.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.pKey.Location = New System.Drawing.Point(8, 40)
Me.pKey.Name = "pKey"
Me.pKey.Size = New System.Drawing.Size(32, 24)
Me.pKey.TabIndex = 1
Me.pKey.TabStop = True
'
'btEqu
'
Me.btEqu.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btEqu.ForeColor = System.Drawing.Color.Red
Me.btEqu.Location = New System.Drawing.Point(168, 72)
Me.btEqu.Name = "btEqu"
Me.btEqu.Size = New System.Drawing.Size(32, 120)
Me.btEqu.TabIndex = 55
Me.btEqu.TabStop = False
Me.btEqu.Text = "="
'
'btNeg
'
Me.btNeg.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btNeg.ForeColor = System.Drawing.Color.Blue
Me.btNeg.Location = New System.Drawing.Point(48, 168)
Me.btNeg.Name = "btNeg"
Me.btNeg.Size = New System.Drawing.Size(32, 23)
Me.btNeg.TabIndex = 19
Me.btNeg.TabStop = False
Me.btNeg.Text = "+-"
'
'form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(208, 201)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.pKey, Me.btEqu, Me.btC, Me.btCE, Me.btBackspace, Me.btAdd, Me.btSub, Me.btMul, Me.btDiv, Me.btDot, Me.btNeg, Me.btNum0, Me.btNum9, Me.btNum8, Me.btNum7, Me.btNum6, Me.btNum5, Me.btNum4, Me.btNum3, Me.btNum2, Me.btNum1, Me.tResult})
Me.MaximizeBox = False
Me.Menu = Me.MainMenu1
Me.Name = "form1"
Me.Text = "计算器"
Me.ResumeLayout(False)
End Sub
#End Region
Dim sOper As String
Dim bDot, bEqu As Boolean
Dim dblAcc, dblDes, dblResult As Double
Private Sub subReset()
sOper = ""
dblAcc = 0
dblDes = 0
dblResult = 0
bDot = False
bEqu = False
tResult.Text = ""
'对变量及控件属性进行初始化
pKey.Focus()
'将焦点移至Panel上,以免出现闪烁光标
End Sub
Private Sub bt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim sText As String
Dim bClick As Button
bClick = sender
'将被点击的按钮赋给定义的bClick变量
sText = bClick.Text
Select Case sText
'通过按钮属性来判断是哪个Button被点击,并执行相应的操作
Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
'输入为数字
If bEqu Then
tResult.Text = ""
End If
'如果已经执行过一次计算,那么再次输入数字时,应清空tResult
bEqu = False
tResult.Text = tResult.Text + sText
'将输入的字符累加
Case "."
If Not bDot Then
tResult.Text = tResult.Text + sText
bDot = True
End If
'如果此前已经有小数点输入,那么这次的小数点输入将被忽略
Case "+", "-", "*", "/"
dblAcc = tResult.Text
tResult.Text = ""
sOper = sText
'记下被操作数及操作符
Case "="
bDot = False
If Not bEqu Then
dblDes = tResult.Text
End If
'如果本次对“=”的点击是连续的第二次点击,那么操作数不变
bEqu = True
Select Case sOper
Case "+"
dblResult = dblAcc + dblDes
'执行加法操作
Case "-"
dblResult = dblAcc - dblDes
'执行减法操作
Case "*"
dblResult = dblAcc * dblDes
'执行乘法操作
Case "/"
dblResult = dblAcc / dblDes
'执行除法操作
End Select
'根据操作符的不同执行相应的计算
tResult.Text = dblResult
dblAcc = dblResult
'将计算结果赋给被操作数,以便执行连续的第二次操作
Case "+/-"
If tResult.Text.Substring(0, 1) = "-" Then
tResult.Text = tResult.Text.Substring(1, tResult.Text.Length - 1)
'如果当前数值为负,则去掉数字最前面的“-”将其变为正数
Else
tResult.Text = "-" + tResult.Text
'如果当前数值为正,则在数字最前面加上“-”将其变为负数
End If
'通过对tResult.Text字符串的首位的判断来确定当前数值的正负
Case "C"
subReset()
'清除所有操作数、被操作数及运算结果,即将计算器重置
Case "CE"
tResult.Text = ""
'清除文本框内容
Case "BackSpace"
If tResult.Text <> "" Then
'当tResult.Text非空时执行退格操作,以免出现溢出
If tResult.Text.Substring(tResult.Text.Length - 1) = "." Then
bDot = False
End If
'当小数点被删掉时,将小数点标志位bDot重置
tResult.Text = tResult.Text.Substring(0, tResult.Text.Length - 1)
'执行退格操作
End If
End Select
pKey.Focus()
'每次点击按钮后,将焦点重新转移到Panel上
End Sub
Private Sub formMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim bt(27) As Button
'定义控件数组
Dim i As Integer
bt(1) = btNum1
bt(2) = btNum2
bt(3) = btNum3
bt(4) = btNum4
bt(5) = btNum5
bt(6) = btNum6
bt(7) = btNum7
bt(8) = btNum8
bt(9) = btNum9
bt(10) = btNum0
bt(11) = btNeg
bt(12) = btDot
bt(13) = btDiv
bt(14) = btMul
bt(15) = btAdd
bt(16) = btSub
bt(17) = btEqu
bt(18) = btBackspace
bt(19) = btCE
bt(20) = btC
'为控件数组赋值
For i = 1 To 20
AddHandler bt(i).Click, New System.EventHandler(AddressOf Me.bt_Click)
'此处是为控件数组bt的所有成员关联事件函数,体现出控件数组的方便之处
Next
subReset()
'调用初始化函数对变量及控件属性进行初始化
End Sub
Private Sub mExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mExit.Click
Application.Exit()
'退出应用程序
End Sub
Private Sub mAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mAbout.Click
Dim fAbout As New formAbout()
fAbout.Show()
'显示“关于”窗体
End Sub
Private Overloads Sub pKey_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles pKey.KeyPress
Select Case e.KeyChar
Case "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
'输入为数字
If bEqu Then
tResult.Text = ""
End If
'如果已经执行过一次计算,那么再次输入数字时,应清空tResult
bEqu = False
tResult.Text = tResult.Text + e.KeyChar
'将输入的字符累加
Case "."
If Not bDot Then
tResult.Text = tResult.Text + e.KeyChar
bDot = True
End If
'如果此前已经有小数点输入,那么这次的小数点输入将被忽略
Case "+", "-", "*", "/"
dblAcc = tResult.Text
tResult.Text = ""
sOper = e.KeyChar
'记下被操作数及操作符
Case "="
bDot = False
If Not bEqu Then
dblDes = tResult.Text
End If
'如果本次输入的“=”是第二次输入,那么操作数不变
bEqu = True
Select Case sOper
Case "+"
dblResult = dblAcc + dblDes
'执行加法操作
Case "-"
dblResult = dblAcc - dblDes
'执行减法操作
Case "*"
dblResult = dblAcc * dblDes
'执行乘法操作
Case "/"
dblResult = dblAcc / dblDes
'执行除法操作
End Select
'根据操作符的不同执行相应的计算
tResult.Text = dblResult
dblAcc = dblResult
'将计算结果赋给被操作数,以便执行连续的第二次操作
Case Chr(8)
If tResult.Text <> "" Then
'当tResult.Text非空时执行退格操作,以免出现溢出
If tResult.Text.Substring(tResult.Text.Length - 1) = "." Then
bDot = False
End If
'当小数点被删掉时,将小数点标志位bDot重置
tResult.Text = tResult.Text.Substring(0, tResult.Text.Length - 1)
'执行退格操作
End If
End Select
pKey.Focus()
'每次输入后,将焦点重新转移到Panel上
End Sub
Private Sub formMain_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated
pKey.Focus()
'使pKey获得输入焦点
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim a As Boolean
Dim b As Boolean
a = a Xor b
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -