Vb.net 实现自定义类
我已经有了这段代码,它可以工作了,尽管我对如何实现自定义类感到困惑。操作员需要改变,我已经把我学到的和得到帮助的所有东西放在一起,并把它作为课程。我正在尝试将运算符更改为自定义类,因此我将使用其他内容,而不是+、-、*、/。基本上这是类,下面是完整的代码Vb.net 实现自定义类,vb.net,Vb.net,我已经有了这段代码,它可以工作了,尽管我对如何实现自定义类感到困惑。操作员需要改变,我已经把我学到的和得到帮助的所有东西放在一起,并把它作为课程。我正在尝试将运算符更改为自定义类,因此我将使用其他内容,而不是+、-、*、/。基本上这是类,下面是完整的代码 Public Class MathOp Public Function Add(NumOne As Integer, NumTwo As Integer) As Integer Return NumOne + NumTw
Public Class MathOp
Public Function Add(NumOne As Integer, NumTwo As Integer) As Integer
Return NumOne + NumTwo
End Function
Public Function Subtract(NumOne As Integer, NumTwo As Integer) As Integer
Return NumOne - NumTwo
End Function
End Class
Public Class MathOp2
Inherits MathOp
Public Function Mul(value1 As Integer, value2 As Integer) As Integer
Return value1 * value2
End Function
Public Function Div(value1 As Integer, value2 As Integer) As Integer
Return value1 / value2
End Function
End Class
我编写了这段代码,只要使用标准运算符,它就可以工作。我只是不知道下一步该怎么办
Option Explicit On
Option Strict On
Option Infer Off
Public Class Form1
Private Sub ButtonAdd_Click(sender As Object, e As EventArgs) Handles m3.Click
'Adds the numbers together and the tag remembers the operator
Private Sub ButtonAdd_Click(sender As Object, e As EventArgs) Handles m3.Click
'Adds the numbers together and the tag remembers the operator
Dim m As New MathOp()
Dim R As Integer = m.Add(CInt(NumOne.Text), CInt(NumTwo.Text))
If NumOne.Text = ("") Then
MessageBox.Show("Please enter the first number")
NumOne.Focus()
ElseIf NumTwo.Text = ("") Then
MessageBox.Show("Please enter the second number")
NumTwo.Focus()
End If
Result.Text = CStr(m.Add(CInt(NumOne.Text), CInt(NumTwo.Text)))
ListBox1.Tag = "+"
End Sub
Private Sub ButtonSub_Click(sender As Object, e As EventArgs) Handles ButtonSub.Click
'Subtracts the numbers
If NumOne.Text = ("") Then
MessageBox.Show("Please enter the first number")
NumOne.Focus()
ElseIf NumTwo.Text = ("") Then
MessageBox.Show("Please enter the second number")
NumTwo.Focus()
End If
Result.Text = CStr(Val(NumOne.Text) - Val(NumTwo.Text))
ListBox1.Tag = "-"
End Sub
Private Sub ButtonMul_Click(sender As Object, e As EventArgs) Handles ButtonMul.Click
'Multiplies the numbers
If NumOne.Text = ("") Then
MessageBox.Show("Please enter the first number")
NumOne.Focus()
ElseIf NumTwo.Text = ("") Then
MessageBox.Show("Please enter the second number")
NumTwo.Focus()
End If
Result.Text = CStr(Val(NumOne.Text) * Val(NumTwo.Text))
ListBox1.Tag = "x"
End Sub
Private Sub ButtonDiv_Click(sender As Object, e As EventArgs) Handles ButtonDiv.Click
'Divides the numbers, with a divide by 0 exception
If NumOne.Text = ("") Then
MessageBox.Show("Please enter the first number")
NumOne.Focus()
ElseIf NumTwo.Text = ("") Then
MessageBox.Show("Please enter the second number")
NumTwo.Focus()
End If
Result.Text = CStr(Val(NumOne.Text) / Val(NumTwo.Text))
ListBox1.Tag = "/"
'outputs a message box telling the user to correct the division by 0, also displays a blank result box instead of NaN
Try
If CDbl(NumTwo.Text) = Val(0) Then
Result.Text = ""
MessageBox.Show("You cannot divide by 0, please input another number")
NumTwo.Focus()
End If
Catch ex As Exception
Result.Text = ""
End Try
End Sub
Private Sub ButtonExit_Click(sender As Object, e As EventArgs) Handles ButtonExit.Click
'Simply closes the form
Me.Close()
End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click
If NumOne.Text = ("") Then
MessageBox.Show("Please enter some numbers")
NumOne.Focus()
ElseIf NumTwo.Text = ("") Then
MessageBox.Show("Please enter another number")
NumTwo.Focus()
End If
Try
If ListBox1.Items.Count < 10 Then
ListBox1.Items.Add(NumOne.Text & ListBox1.Tag.ToString() & NumTwo.Text & ("=") & Result.Text)
End If
Catch ex As Exception
Result.Text = ""
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles ButtonClear.Click
ListBox1.Items.Clear()
End Sub
Private Sub ButtonReset_Click_1(sender As Object, e As EventArgs) Handles ButtonReset.Click
NumOne.Text = ""
NumTwo.Text = ""
Result.Text = ""
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim toolTip1, toolTip2, toolTip3, toolTip4, toolTip5, toolTip6, toolTip7, toolTip8 As New ToolTip()
toolTip1.SetToolTip(Me.m3, "Addition")
toolTip2.SetToolTip(Me.ButtonSub, "Subtraction")
toolTip3.SetToolTip(Me.ButtonMul, "Multiplication")
toolTip4.SetToolTip(Me.ButtonDiv, "Division")
toolTip5.SetToolTip(Me.ButtonSave, "Save operation")
toolTip6.SetToolTip(Me.ButtonReset, "Reset operation")
toolTip7.SetToolTip(Me.ButtonExit, "Exit application")
toolTip8.SetToolTip(Me.ButtonClear, "Clear list")
End Sub
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
'This is part of the second assignment, double click on list items and they show up in the text boxes, still working on the other part
If ListBox1.SelectedIndex = -1 Then
Return
End If
'Get the text of the selected item
Dim selectedtext As String = ListBox1.Items(ListBox1.SelectedIndex).ToString()
'Split the item by the operator and the = into an array of strings
Dim parts As String() = selectedtext.Split("+"c, "-"c, "x"c, "/"c, "="c)
If parts.Length > 2 Then
'Define a variable for each part
Dim part1 As String = parts(0).Trim()
Dim part2 As String = parts(1).Trim()
NumOne.Text = part1
NumTwo.Text = part2
'Make text boxes set to part1 and part2. part1 = 1, part2 = 1
End If
End Sub
End Class
选项显式打开
选项严格限制在
选项推断
公开课表格1
私有子按钮单击(发送者作为对象,e作为事件参数)处理m3。单击
'将数字相加,标签会记住操作员
私有子按钮单击(发送者作为对象,e作为事件参数)处理m3。单击
'将数字相加,标签会记住操作员
Dim作为新的MathOp()
Dim R As Integer=m.Add(CInt(NumOne.Text)、CInt(NumTwo.Text))
如果NumOne.Text=(“”),则
MessageBox.Show(“请输入第一个数字”)
NumOne.Focus()
ElseIf NumTwo.Text=(“”)然后
MessageBox.Show(“请输入第二个数字”)
NumTwo.Focus()
如果结束
Result.Text=CStr(m.Add(CInt(NumOne.Text)、CInt(NumTwo.Text)))
ListBox1.Tag=“+”
端接头
Private Sub ButtonSub_Click(发送者作为对象,e作为事件参数)处理ButtonSub。单击
'减去数字
如果NumOne.Text=(“”),则
MessageBox.Show(“请输入第一个数字”)
NumOne.Focus()
ElseIf NumTwo.Text=(“”)然后
MessageBox.Show(“请输入第二个数字”)
NumTwo.Focus()
如果结束
Result.Text=CStr(Val(NumOne.Text)-Val(NumTwo.Text))
ListBox1.Tag=“-”
端接头
Private Sub ButtonMul\u Click(发送者作为对象,e作为事件参数)处理ButtonMul。单击
"乘以数字,
如果NumOne.Text=(“”),则
MessageBox.Show(“请输入第一个数字”)
NumOne.Focus()
ElseIf NumTwo.Text=(“”)然后
MessageBox.Show(“请输入第二个数字”)
NumTwo.Focus()
如果结束
Result.Text=CStr(Val(NumOne.Text)*Val(NumTwo.Text))
ListBox1.Tag=“x”
端接头
Private Sub ButtonDiv\u Click(发送者作为对象,e作为事件参数)处理ButtonDiv。Click
'对数字进行除法,出现除法为0的异常
如果NumOne.Text=(“”),则
MessageBox.Show(“请输入第一个数字”)
NumOne.Focus()
ElseIf NumTwo.Text=(“”)然后
MessageBox.Show(“请输入第二个数字”)
NumTwo.Focus()
如果结束
Result.Text=CStr(Val(NumOne.Text)/Val(NumTwo.Text))
ListBox1.Tag=“/”
'输出一个消息框,告诉用户将除法改为0,同时显示一个空白结果框,而不是NaN
尝试
如果CDbl(NumTwo.Text)=Val(0),则
Result.Text=“”
MessageBox.Show(“您不能除以0,请输入另一个数字”)
NumTwo.Focus()
如果结束
特例
Result.Text=“”
结束尝试
端接头
Private Sub buttonnexit\u Click(发送者作为对象,e作为事件参数)处理buttonnexit。单击
'只需关闭表单
我
端接头
私有子按钮保存\单击(发送者作为对象,e作为事件参数)处理按钮保存。单击
如果NumOne.Text=(“”),则
MessageBox.Show(“请输入一些数字”)
NumOne.Focus()
ElseIf NumTwo.Text=(“”)然后
MessageBox.Show(“请输入其他号码”)
NumTwo.Focus()
如果结束
尝试
如果ListBox1.Items.Count<10,则
ListBox1.Items.Add(NumOne.Text&ListBox1.Tag.ToString()&NumTwo.Text&(“=”)&Result.Text)
如果结束
特例
Result.Text=“”
结束尝试
端接头
私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮清除。单击
ListBox1.Items.Clear()
端接头
Private Sub ButtonReset\u Click\u 1(发送者作为对象,e作为事件参数)处理ButtonReset。单击
NumOne.Text=“”
NumTwo.Text=“”
Result.Text=“”
端接头
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
将工具提示1、工具提示2、工具提示3、工具提示4、工具提示5、工具提示6、工具提示7、工具提示8变暗为新工具提示()
工具提示1.设置工具提示(Me.m3,“添加”)
工具提示2.设置工具提示(Me.ButtonSub,“减法”)
工具提示3.设置工具提示(Me.ButtonMul,“乘法”)
工具提示4.设置工具提示(Me.ButtonDiv,“分割”)
工具提示5.设置工具提示(Me.ButtonSave,“保存操作”)
工具提示6.设置工具提示(Me.ButtonReset,“重置操作”)
工具提示7.设置工具提示(Me.buttonnexit,“退出应用程序”)
工具提示8.设置工具提示(Me.ButtonClear,“清除列表”)
端接头
私有子ListBox1_DoubleClick(发送者作为对象,e作为事件参数)处理ListBox1.DoubleClick
'这是第二个任务的一部分,双击列表项,它们显示在文本框中,另一部分仍在工作
如果ListBox1.SelectedIndex=-1,则
回来
如果结束
'获取所选项目的文本
Dim selectedtext As String=ListBox1.Items(ListBox1.SelectedIndex.ToString())
'通过运算符和=将项拆分为字符串数组
按字符串()调整部分大小=selectedtext.Split(“+”c“-”c,“x”c“/”c“=”c)
如果零件长度>2,则
'为每个零件定义一个变量
将零件1的尺寸标注为字符串=零件(0)。修剪()
尺寸零件2作为字符串=零件(1).修剪()
NumOne.Text=part1
NumTwo.Text=part2
'将文本框设置为part1和part2。第1部分=1,第2部分=1
如果结束
端接头
末级
VB.NET允许您重载某些运算符,但不允许您创建新的自定义运算符。有关VB.NET中运算符重载的详细信息,以及支持重载的运算符列表,请参阅MSDN上的
从你的问题中不清楚你到底想完成什么。不过,这似乎是基于你
Public Class MathOp
Public Function Add(value1 As Integer, value2 As Integer) As Integer
Return value1 + value2
End Function
Public Function Subtract(value1 As Integer, value2 As Integer) As Integer
Return value1 - value2
End Function
End Class
Dim m As New MathOp()
Dim result As Integer = m.Add(2, 2) ' Returns 4