Public Class Form7
Dim num1 As String '一个操作数(以 18 进制字符串存储)
Dim num2 As String '二个操作数(以 18 进制字符串存储)
Dim op As Char '算符
Private Function ConvertToDecimal(ByVal num As String) As Integer
Dim decimalValue As Integer = 0
Dim power As Integer = num.Length - 1
For Each digit As Char In num
Dim digitValue As Integer
Select Case digit
Case "0"
digitValue = 0
Case "1"
digitValue = 1
Case "2"
digitValue = 2
Case "3"
digitValue = 3
Case "4"
digitValue = 4
Case "5"
digitValue = 5
Case "6"
digitValue = 6
Case "7"
digitValue = 7
Case "8"
digitValue = 8
Case "9"
digitValue = 9
Case "A"
digitValue = 10
Case "B"
digitValue = 11
Case "C"
digitValue = 12
Case "D"
digitValue = 13
Case "E"
digitValue = 14
Case "F"
digitValue = 15
Case "G"
digitValue = 16
Case "H"
digitValue = 17
Case Else
'处理非法字符
MessageBox.Show("输入包含非法字符")
Return -1 '添加返回值以处理非法输入情况
End Select
decimalValue += digitValue * (18 ^ power)
power -= 1
Next
Return decimalValue
End Function
Private Function ConvertFromDecimal(ByVal decimalValue As Integer) As String
Dim result As String = ""
While decimalValue > 0
Dim remainder As Integer = decimalValue Mod 18
Select Case remainder
Case 0
result = "0" + result
Case 1
result = "1" + result
Case 2
result = "2" + result
Case 3
result = "3" + result
Case 4
result = "4" + result
Case 5
result = "5" + result
Case 6
result = "6" + result
Case 7
result = "7" + result
Case 8
result = "8" + result
Case 9
result = "9" + result
Case 10
result = "A" + result
Case 11
result = "B" + result
Case 12
result = "C" + result
Case 13
result = "D" + result
Case 14
result = "E" + result
Case 15
result = "F" + result
Case 16
result = "G" + result
Case 17
result = "H" + result
End Select
decimalValue = decimalValue \ 18
End While
Return result
End Function
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'数字 0 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
'数字 1 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
'数字 2 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
'数字 3 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click
'数字 4 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button6_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button6.Click
'数字 5 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button7_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button7.Click
'数字 6 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button8_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button8.Click
'数字 7 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button9_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button9.Click
'数字 9 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button10_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button10.Click
'数字 8 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button11_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button11.Click
'数字 9 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button12_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button12.Click
'数字 A 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button13_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button13.Click
'数字 B 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button14_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button14.Click
'数字 C 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button15_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button15.Click
'数字 D 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button16_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button16.Click
'数字 E 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button24_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button24.Click
'数字 F 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button25_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button25.Click
'数字 G 添加到文本框中
TextBox1.Text += sender.text
End Sub
Private Sub Button17_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button17.Click
'存 + 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button18_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button18.Click
'存 - 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button19_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button19.Click
'存 * 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button20_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button20.Click
'存 / 第一个操作数和运算符,并清空文本框
num1 = TextBox1.Text
op = sender.text
TextBox1.Clear()
End Sub
Private Sub Button21_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button21.Click
'= 算结果并显示
num2 = TextBox1.Text
Dim decimalNum1 As Integer = ConvertToDecimal(num1)
Dim decimalNum2 As Integer = ConvertToDecimal(num2)
Dim result As Integer
Select Case op
Case "+"
result = decimalNum1 + decimalNum2
Case "-"
result = decimalNum1 - decimalNum2
Case "*"
result = decimalNum1 * decimalNum2
Case "/"
If decimalNum2 = 0 Then
MessageBox.Show("除数不能为 0")
Exit Sub
End If
result = decimalNum1 / decimalNum2
End Select
TextBox1.Text = ConvertFromDecimal(result)
End Sub
Private Sub Button22_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button22.Click
'空文本框和操作数
TextBox1.Clear()
num1 = ""
num2 = ""
op = " "
End Sub
Private Sub Button23_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button23.Click
'除最后一位字符
If TextBox1.Text.Length > 0 Then
TextBox1.Text = TextBox1.Text.Substring(0, TextBox1.Text.Length - 1)
End If
End Sub
End Class