Form中的文本作为模块函数中的整数

时间:2015-03-19 23:36:50

标签: vb.net visual-studio-2013

在Visual Studio 2013中使用Visual Basic。我需要从form1上的文本框中获取输入,并将其用作模块函数中的整数。当我在click事件之后调用form1上的一个函数时,我在公共函数整数上得到了无效参数的错误。如何将文本传递给模块,然后将其视为整数?

这就是我在form1上所拥有的。这在最后一个项目上运行正常,该项目需要执行计算并仅在form1上显示。此项目需要在我创建的模块中执行计算,然后在form2上的标签中显示。 (我对此仍然很陌生)。

'Define inputs as public variables
Public intNumber1 As Integer
Public intNumber2 As Integer

'Create Function to validate inputs as integers
Public Function ValidateInputFields() As Boolean
    'Try to convert each input to integer. If not, return error message, clear input, and return focus
    If Not Integer.TryParse(txtNumber1.Text, intNumber1) Then
        MessageBox.Show("Please enter only whole numbers.")
        txtNumber1.Clear()
        txtNumber1.Focus()
        Return False
    End If

    If Not Integer.TryParse(txtNumber2.Text, intNumber2) Then
        MessageBox.Show("Please enter only whole numbers.")
        txtNumber2.Clear()
        txtNumber2.Focus()
        Return False
    End If

    Return True
End Function

这是我收到的错误消息:

Error   1   Argument not specified for parameter 'intNumber1' of 'Public               
Function AddInt() As Integer'.  

这是我在模块中写的函数:

'Create function to pass the values and add
    Public Function AddInt(ByVal intNumber1 As Integer, intNumber2 As  
Integer) As Integer
    'Define intSum
    Dim intSum As Integer
    'AddInt adds numbers 1 and 2
    intSum = intNumber1 + intNumber2
    'Return the result
    Return intSum
End Function

2 个答案:

答案 0 :(得分:2)

TextBox中的文本将是String类型,您需要在检查其内容是否可以安全地解释为数字后将其转换为整数。

这样的事情:

Dim num As Integer
If Not Integer.TryParse(TextBox1.Text, num) Then
    '... it's not an integer, so don't try to use it
Else
    '... call method using "num" as your integer parameter
End If

答案 1 :(得分:-1)

这就是我最终使函数调用正常工作的方式:

 Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles 
btnAdd.Click
    'create instance for results form and define sum variable
    Dim frmResults As New Results
    Dim intSum As Integer
    'If inputs are valid, display the integer sum on results form
    If ValidateInputFields() Then
        'Call Add Integer function from module
        intSum = AddInt(intNumber1, intNumber2)
        'Send answers to Results form and display
        frmResults.lblNumber1Result.Text = intNumber1.ToString()
        frmResults.lblOperatorResult.Text = "plus"
        frmResults.lblNumber2Result.Text = intNumber2.ToString()
        frmResults.lblEqualsResult.Text = intSum.ToString()
        frmResults.ShowDialog()
    End If

在我(intNumber1, intNumber2)的函数调用之后添加AddInt后,一切正常。

ValidateInputFields()函数是@mcrimes之前帮助我的TryParse方法。这确实处理了我之前项目中留下的任何非数字输入或空白。

再次感谢@Jonathan和@mcrimes提供的所有帮助。