Получить DialogResult из общедоступного Sub (Модуль)

Я не знаю, какое ключевое слово для поиска.

Это на модуле в моем приложении.

Public Sub msgYNC(ByVal result As DialogResult)
    result = MessageBox.Show("Are you sure you want to save and continue?", "RM Farms Confirmation", _
                 MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
End Sub

Теперь я хочу использовать его в форме. Поэтому, когда я нажимаю на Подтвердить:

Dim result As DialogResult
    msgYNC(result)
    If result = Windows.Forms.DialogResult.Yes Then
        'yes
    ElseIf result = Windows.Forms.DialogResult.No Then
        'n
    ElseIf result = Windows.Forms.DialogResult.Cancel Then
        'ca
    End If

Но это ничего мне не возвращает.. Я не получаю ответ. Я не уверен, как это кодировать, вы можете определить, что не так?

1 ответ

Решение

Решение должно быть довольно простым. Не используйте byval в вашем Sub, используйте byref

Public Sub msgYNC(ByRef result As DialogResult)
    result = MessageBox.Show("Are you sure you want to save and continue?", 
                             "RM Farms Confirmation", _
                             MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
End Sub

не могли бы вы попробовать это?

Хотя вы можете использовать следующую структуру (если вы хотите, чтобы в вашем sub-method msgYNC)

    Select Case MessageBox.Show("", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
        Case Windows.Forms.DialogResult.Yes
            'Do something
        Case Windows.Forms.DialogResult.No
            'Do something else
        Case Windows.Forms.DialogResult.Cancel
            'Cancel something
        Case Else
            'Do something unusefull
    End Select
Другие вопросы по тегам