У меня проблемы с этим кодом, и я не знаю правильных ключевых слов для поиска по этой теме. Извините, если название неясно.

Я пытаюсь создать две разные строки, используя предложение «Тусклый» и вызывая его с помощью кнопки, но это не работает.

Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    If CheckBox1.Checked = True Then
        Dim text1 As String = "This is message number 1"
    End If

    If CheckBox2.Checked = True Then
        Dim text2 As String = "This is message number 2"
    End If
End Sub

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    MsgBox(text1)
End Sub

Кажется, что строки text1 и text2 созданы только для использования на Public Sub Form1_Load, как я могу использовать их на Private Sub Button8_Click?

0
KING-MOD 17 Окт 2015 в 22:37

2 ответа

Лучший ответ

Сделайте переменные членами уровня класса:

Private text1 As String
Private text2 As String

Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    If CheckBox1.Checked = True Then
        text1 = "This is message number 1"
    End If

    If CheckBox2.Checked = True Then
        text2 = "This is message number 2"
    End If
End Sub

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    MsgBox(text1)
End Sub

Часто при передаче значений из одного метода в другой вы делаете их параметрами метода. Но в случае обработчиков событий вы не вызываете метод обработчика напрямую. Поскольку обработчики реагируют на события объектного уровня, для обмена информацией она должна храниться в состоянии объектного уровня.

0
David 17 Окт 2015 в 19:41

Вам необходимо объявить частную строковую переменную в Form1:

Private Text As String = ""

Затем в случае необходимости измените значение Text соответствующим образом.

Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If CheckBox1.Checked = True Then
    Text = "This is message number 1"
End If

If CheckBox2.Checked = True Then
    Text = "This is message number 2"
End If
End Sub

Наконец, нажав кнопку,

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
MsgBox(Text)
End Sub
0
Fᴀʀʜᴀɴ Aɴᴀᴍ 17 Окт 2015 в 19:41