在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
答案 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提供的所有帮助。