有条件地关闭表格

时间:2013-12-15 12:56:24

标签: vb.net return vb.net-2010

我的问题是我不知道一个合适的命令来阻止我的代码运行。如果我使用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

3 个答案:

答案 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