Vb.net “接收”;对象引用未设置为对象的实例;使用Sub(VB)在类之间传递字符串时出错
我试图通过在另一个类中定义的函数传递字符串,但收到标题中的错误 代码定义:Vb.net “接收”;对象引用未设置为对象的实例;使用Sub(VB)在类之间传递字符串时出错,vb.net,Vb.net,我试图通过在另一个类中定义的函数传递字符串,但收到标题中的错误 代码定义: Public Class frmStudentTrackers Public Sub errorMessage(ByVal detail As String) MessageBox.Show(detail, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning) End Sub End Class 错误消息
Public Class frmStudentTrackers
Public Sub errorMessage(ByVal detail As String)
MessageBox.Show(detail, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Sub
End Class
错误消息实现:
Public Class Student
Public mainform As frmStudentTrackers
Public totalTestCompleted As Integer
Public AllTests(7) As String
Public Function getTestResults(ByRef totalTestsCompleted As Integer)
totalTestCompleted = 0
Dim arrayPos As Integer = 0
Dim testNumber As Integer = 1
For i = 0 To 7
AllTests(arrayPos) = InputBox("Please Enter the result for test " & testNumber & Environment.NewLine & "Please enter True (Pass), False (Fail) Or N/A if not completed!", "Test Result Collection")
AllTests(arrayPos) = StrConv(AllTests(arrayPos), vbUpperCase)
If AllTests(arrayPos) = "TRUE" Or AllTests(arrayPos) = "FALSE" Then
totalTestCompleted = totalTestCompleted + 1
ElseIf AllTests(arrayPos) <> "TRUE" Or AllTests(arrayPos) <> "FALSE" Or AllTests(arrayPos) <> "N/A" Then
mainform.errorMessage("This is not a valid option! The test result input will now restart. Please begin from test 1, inputing True (Pass), False (Fail) Or N/A if not completed!")
End
End If
arrayPos = arrayPos + 1
testNumber = testNumber + 1
Next
Return totalTestCompleted
End Function
End Class
公共班级学生
作为frmStudentTrackers的公共主窗体
公共totalTestCompleted为整数
将所有测试(7)作为字符串公开
公共函数getTestResults(ByRef totalTestsCompleted为整数)
totalTestCompleted=0
Dim arrayPos作为整数=0
Dim testNumber为整数=1
对于i=0到7
AllTests(arrayPos)=InputBox(“请输入测试结果”&testNumber&Environment.NewLine&“如果未完成,请输入True(通过)、False(失败)或N/A!”,“测试结果集合”)
AllTests(arrayPos)=StrConv(AllTests(arrayPos),大写)
如果AllTests(arrayPos)=“真”或AllTests(arrayPos)=“假”,则
totalTestCompleted=totalTestCompleted+1
否则,如果所有测试(arrayPos)“真”或所有测试(arrayPos)“假”或所有测试(arrayPos)“不适用”,则
mainform.errorMessage(“这不是一个有效选项!测试结果输入现在将重新启动。请从测试1开始,输入True(通过)、False(失败)或N/a(如果未完成))
终点
如果结束
arrayPos=arrayPos+1
testNumber=testNumber+1
下一个
返回totalTestCompleted
端函数
末级
我做了一个文件来测试它,所以如果你需要完整的程序,让我知道,我可以把它放在这里给你!
我的目标是将括号中的内容(作为详细信息传递)传递给函数,以便出现错误消息。我理解这个错误是因为即使我已经定义了它,这个值也显然是空的?
我做错什么了吗
我希望这是有道理的!谢谢大家! 您可能需要实例类,而不仅仅是声明类 不要这样做:
Public mainform As frmStudentTrackers
尝试这样做:
Public main form As New frmStudentTrackers
当我这样做时(在学生班级的顶端),程序将不会运行,并且我收到一个System.StackoverflowException错误?我需要在函数中声明它吗?谢谢!我意识到我也需要把它放到函数中!现在开始工作了!非常感谢你!但出于某种原因,strconv不会将“n/a”转换为大写?它与“true”和“false”一起使用,而与“n/a”不一起使用吗?是的,它与“n/a”一起使用,我添加了一个断点,出于某种原因,它与“n/a”不一起使用。我只能认为它与正在添加的“/”字符有某种关联,但我自己也尝试过,它可以很好地处理包含“n/a”的字符串,这是我最初的想法!出于某种原因,当我输入“n/a”或“n/a”时,我会收到错误消息?