Member 14326286 Ответов: 3

Как присвоить значение строке?


- Привет! Я создал приложение (в Windows Form App. Net), где пользователь вводит информацию, и она выходит во второй форме в списке. Однако, когда приложение запускается и пользователь переходит ко второй форме, информация нигде не появляется. Я получаю ошибки, говорящие о том, что мой "lbResult" и мой "результат" используются до того, как им присваивается значение. Я не знаю, как присвоить значение строке, и мой учебник действительно очень помогает мне в этом конкретном вопросе. Любая помощь по этому вопросу будет очень признательна. Заранее спасибо!

Dim lbResults As ListBox
Dim Results As String
Dim strName As String 'declare Hello and txtName as string in order to simplify code
strName = "Hello " & txtName.Text

lbResults.Items.Add(Results)
If radCompliment.Checked = True Then 'if/then branch statement to make message appear depending on what user chooses. 
Results = strName & "You are FABULOUS"

Else
MessageBox.Show("Please input information")

End If

If radMotivation.Checked = True Then

Results = strName & "Stay focused and never give up!"
Else
MessageBox.Show("Please put in information")
End If

If radGreeting.Checked = True Then
Results = strName & "How are you today?  "

Else
MessageBox.Show("Please put in information")
End If

If radJoke.Checked = True Then
Results = strName & "What did the computer do at lunch time? Had a byte!"
Else
MessageBox.Show("Please put in information")
End If

If radFact.Checked = True Then
Results = strName & "Did you know that Banannas are curved because when they grow they gravitate towards the sun."
Else
MessageBox.Show("Please put in information")
End If

End Sub


Что я уже пробовал:

Сначала я попробовал обойтись без него. Dim Results as String немного, но я обнаружил, что мне нужно поместить весь свой пользовательский ввод в одно место, прежде чем пытаться поместить его в список, если это имеет смысл. Я искал в интернете и в своем учебнике/заметках помощь по этому вопросу, но мне не очень повезло. Я понимаю большую часть кодирования, когда оно связано с цифрами, но я думаю, что создание моего приложения с текстом вместо цифр сделало его запутанным.

3 Ответов

Рейтинг:
20

OriginalGriff

Посмотрите на свой код:

Dim lbResults As ListBox
Dim Results As String
Dim strName As String 'declare Hello and txtName as string in order to simplify code
strName = "Hello " & txtName.Text

lbResults.Items.Add(Results)
Вы объявляете переменные lbResults и Results но вы ни в коем случае не придаете им значения. Итак, когда вы доберетесь до этой линии:
lbResults.Items.Add(Results)
как lbResults, так и результаты являются Nothing и вы получаете ошибку компиляции, что вы используете неинициализированное значение. Это хорошо, потому что если бы вы этого не сделали, то при запуске кода Вы получили бы "ошибку нулевой ссылки", потому что в нем нет списка lbResults чтобы иметь возможность Items собственность!

Наверное, вы не хотите заявлять lbResults в этом методе вообще - он будет маскировать тот, который находится в вашей форме, так что ваш пользователь все равно не увидит никаких результатов. Поэтому удалите строку объявления и посмотрите, исчезнет ли эта ошибка. Если он заменен ошибками "неопределенная переменная", то вам нужно вернуть его обратно, создать экземпляр и вручную добавить его в свою форму, чтобы пользователь мог что-либо увидеть.

Вы также можете добавить каждый из них Results значение для вашего списка при создании строки результатов - или она тоже не будет видна.
Подобный этому:
If radCompliment.Checked = True Then 
   Results = strName & "You are FABULOUS"
   lbResults.Items.Add(Results)
Else
   MessageBox.Show("Please input information")
End If
(но вы будете нуждаться в нем в любом состоянии, а также).


Member 14326286

Спасибо, это очень помогло!

OriginalGriff

Всегда пожалуйста!

Рейтинг:
16

Christian Graus

Трудно увидеть, находится ли этот код внутри метода? В любом случае вы говорите о двух формах. Ваши формы не могут видеть переменные друг друга. Общие данные должны жить в хранилище данных


Рейтинг:
1

Ralf Meier

Сначала :
Я предпочитаю, чтобы вы предоставили код так, как он действительно используется вами.

2-й:
Я полагаю, что вы используете несколько флажков. В этом случае вы должны вызывать свой метод (есть ли он у вас ?) с каждым CheckedChange-событием из каждого флажка.

В основном, чтобы дать вам конкретную помощь, вы должны дать гораздо больше информации (и лучший код).