2013-12-15 10 views
1

Моя проблема в том, что я не знаю подходящей команды, чтобы остановить мой код. Если я использую оператор return, как показано ниже, код в подпрограмме btnClose будет продолжать работать, заставляя программу закрываться при ошибке. Форма не должна закрываться, если происходит ошибка при сохранении.Остановить форму от закрытия условно

Private Sub Save_Customer() 
    If txtName.text = "" then 
     msgbox("Error") 
     return 
    End If 
End sub 

Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click 
    save_Customer() 
    Me.Close() 
End Sub 

ответ

1

Изменение Sub к функции, а затем оценить возврат:

Private Function Save_Customer() As Boolean 
    If txtName.text = "" then 
     msgbox("Error") 
     return False 
    Else 
     Return True 
    End If 
End sub 

Private Sub btnClose_Click(sender As System.Object, 
        e As System.EventArgs) Handles btnClose.Click 
    ' evaluate the return: 
    If save_Customer() Then 
     Me.Close() 
    End IF 
End Sub 
0

Это, вероятно, не самый лучший способ вокруг проблемы, но вы могли бы решить эту проблему так:

Private Function Save_Customer() 
    If txtName.Text = "" Then 
     MsgBox("Error") 
     Return False 
    Else 
     Return True 
    End If 

End sub 

Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles  btnClose.Click 
    If Save_Customer() = False Then 
     Exit Sub 
    Else 
     Me.Close() 
    End if 
End Sub 
End Class 
1

Вам следует лучше перехватить событие Closing, а Cancel закрытие через e.Cancel = True. В противном случае это приведет к слишком большому количеству сантехники. (Вы можете закрыть форму не только через btnClose, справа)? Также ALT + F4, Мышь нажимаем кнопку X и т. Д. Будьте осторожны, но не оставляйте своего пользователя в тупике, где они не могут закрыть вашу форму, и должны вернуться к использованию диспетчера задач.

Смежные вопросы