#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 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 " amp; testNumber amp; Environment.NewLine amp; "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
Я создал документ для его тестирования, поэтому, если вам нужна полная программа, дайте мне знать, и я могу разместить ее здесь для вас!
Моя цель — передать функции то, что находится в скобках (передается как деталь), чтобы могло появиться сообщение об ошибке. Я понимаю, что ошибка связана с тем, что значение, по-видимому, равно нулю, хотя я его определил?
Я что-то делаю не так?
Я надеюсь, что это имеет смысл! Спасибо!
Комментарии:
1. Когда я это делаю (в верхней части класса students), программа не запускается, и я получаю System. Ошибка исключения StackOverflowException? Нужно ли мне объявлять ее внутри функции?
Ответ №1:
Возможно, вам потребуется создать экземпляр вашего класса, а не только объявить его.
Вместо этого: Public mainform As frmStudentTrackers
попробуйте сделать это:
Public mainform As New frmStudentTrackers
Комментарии:
1. Спасибо! Я понял, что мне тоже нужно поместить это в функцию! Теперь это работает! Большое вам спасибо! Но по какой-то причине strconv не преобразует «n / a» в верхний регистр?
2. Работает ли это с «true» и «false», а не с «n / a»?
3. да, я добавил точку останова, и по какой-то причине она просто не будет работать с «n / a»
4. Я могу только думать, что это как-то связано с добавляемым символом «/», но я пробовал это сам, и он отлично работает со строкой, содержащей «n / a»
5. Это была моя первоначальная мысль! По какой-то причине, когда я ввожу «n / a» или «N / A», я получаю сообщение об ошибке?