vb.net中算术运算的说明

vb.net中算术运算的说明,vb.net,Vb.net,我有三个名为FirstNumber、SecondNumber和ThirdNumber的文本框,以及三个用于操作选择的单选按钮。单击某个单选按钮时,标签中会显示某个结果。但是,除非我在运行程序之前在文本框中输入数字,否则结果将显示为0。我试图通过下面的代码来实现这一点,但没有得到预期的结果,建议一些技巧来解决这个问题 Dim FirstNumber As Integer Dim SecondNumber As Integer Dim ThirdNumber As Integer Dim Resul

我有三个名为FirstNumber、SecondNumber和ThirdNumber的文本框,以及三个用于操作选择的单选按钮。单击某个单选按钮时,标签中会显示某个结果。但是,除非我在运行程序之前在文本框中输入数字,否则结果将显示为0。我试图通过下面的代码来实现这一点,但没有得到预期的结果,建议一些技巧来解决这个问题

Dim FirstNumber As Integer
Dim SecondNumber As Integer
Dim ThirdNumber As Integer
Dim Result1 As Integer
Dim Result2 As Integer
Dim Result3 As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FirstNumber = CInt(TextBox1.Text)
    SecondNumber = CInt(TextBox2.Text)
    ThirdNumber = CInt(TextBox3.Text)
    Result1 = FirstNumber + SecondNumber - ThirdNumber
    Result2 = FirstNumber - ThirdNumber / SecondNumber
    Result3 = SecondNumber Mod ThirdNumber
End Sub

因为
Form\u Load
在加载
Form
时运行,这是在您可以看到它的事件之前。此时
文本框
es仍为空

您应该将代码放入(例如)添加到表单中的
按钮上的
单击事件中。然后在文本框中输入文本并单击按钮查看结果

Dim FirstNumber As Integer
Dim SecondNumber As Integer
Dim ThirdNumber As Integer
Dim Result1 As Integer
Dim Result2 As Integer
Dim Result3 As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FirstNumber = CInt(TextBox1.Text)
    SecondNumber = CInt(TextBox2.Text)
    ThirdNumber = CInt(TextBox3.Text)
    Result1 = FirstNumber + SecondNumber - ThirdNumber
    Result2 = FirstNumber - ThirdNumber / SecondNumber
    Result3 = SecondNumber Mod ThirdNumber
End Sub

将代码从Form1_Load移动到sub,然后在需要时调用sub…例如,当用户更改文本框中的值时

Private Sub doCalculation()
    FirstNumber = CInt(TextBox1.Text)
    SecondNumber = CInt(TextBox2.Text)
    ThirdNumber = CInt(TextBox3.Text)
    Result1 = FirstNumber + SecondNumber - ThirdNumber
    Result2 = FirstNumber - ThirdNumber / SecondNumber
    Result3 = SecondNumber Mod ThirdNumber
End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    call doCalculation()
End Sub

这是与问题对应的代码,该问题具有问题中提出的所有功能:

Public Class Form2

    Private Sub doCalculation(ByVal op As Integer)
        Dim FirstNumber As Integer = CInt(TextBox1.Text)
        Dim SecondNumber As Integer = CInt(TextBox2.Text)
        Dim ThirdNumber As Integer = CInt(TextBox3.Text)
        Dim Result As Integer
        If SecondNumber = 0 Then
            MsgBox("unable to proceed.. Second text box cannot be left blank")
            TextBox2.Focus
        Else
        Select Case op
            Case 0 : Result = FirstNumber + SecondNumber - ThirdNumber
            Case 1 : Result = FirstNumber - ThirdNumber / SecondNumber
            Case 2 : Result = SecondNumber Mod ThirdNumber
        End Select
        MsgBox(Result)
        End If
    End Sub
    Private Sub moduls_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles moduls.Click
        doCalculation(2)
    End Sub

    Private Sub addsub_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles addsub.Click
        doCalculation(0)
    End Sub

    Private Sub subdiv_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles subdiv.Click
        doCalculation(1)
    End Sub
End Class

其中,subdiv、addsub和moduls是单选按钮

如果您不需要从用户处获取这些值,请使用变量而不是文本框…或键入一些值我希望用户键入三个数字的值,但当我键入值时,结果仅为0如何确定结果为零?在用户输入任何内容之前很久,表单第一次加载时就会进行计算。您可能使用了错误的事件。添加一个按钮并将该代码移动到点击事件您不再需要使用
Call
关键字…当他们在TB1中键入而TB2中没有任何内容时会发生什么?使用按钮井,这是为了让你开始,我想你可以从那里解决它。如果TB2算不上什么,那么您是对的,它将不起作用。因此,您需要在doCalculation(计算前检查所有文本框值)或错误处理(try/catch)中使用一些验证功能。一天:是的,您不需要使用
Call
,我仍然多次使用它,只是为了让它在我查看代码时脱颖而出。@Chase Rocker:您完全错了,此代码不会给出结果并引发
DivisionByZero异常
。这是因为,当在为text2输入值之前更改text1的值时,会导致
secondNumber=0
,因此代码段'Result2=FirstNumber-ThirdNumber/secondNumber'引发异常。如果TextBox2为空或“0”并且他们单击RB0/AddSub怎么办?@puropoix:查看此代码`如果SecondNumber=0,则SecondNumber=1如果`@puropoix:查看更新