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