我的问题是我不知道一个合适的命令来阻止我的代码运行。如果我使用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
答案 0 :(得分:1)
将Sub更改为Function,然后评估返回值:
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
答案 1 :(得分:1)
您应该更好地拦截Closing
事件,并Cancel
通过e.Cancel = True
结束。否则会导致管道太多。 (您可以通过btnClose
关闭不仅表单,对吗?还有ALT + F4,鼠标点击X按钮等。但要小心,不要让用户陷入僵局,他们无法关闭你的表单,不得不回到使用任务管理器。
答案 2 :(得分: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