簡體   English   中英

Visual Basic 如何在顯示 MsgBox 后停止事件

[英]Visual Basic how to stop an event after MsgBox is shown

我想確保用戶在我的進一步處理之前檢查了我的 3 個復選框之一,因此我在下面創建了 function 並在他們沒有檢查任何內容時生成一個 Msg。 問題是在消息框之后該過程仍在進行。 那么在顯示這個特定的 msgbox 之后有什么方法可以阻止這個事件?

Private Sub btnPay_Click(sender As Object, e As EventArgs) Handles btnPay.Click
        If chkbNotes.Checked = True Then
            conn.Open()
            sql = "UPDATE Order SET payment_method_id = 1 WHERE Id = '" + FoodMenu.OrderID + "';"
            cmd = New SqlCommand(sql, conn)
            cmd.ExecuteNonQuery()
        Else
            If chkbCreditCard.Checked = True Then
                conn.Open()
                sql = "UPDATE Order SET payment_method_id = 2 WHERE Id = '" + FoodMenu.OrderID + "';"
                cmd = New SqlCommand(sql, conn)
                cmd.ExecuteNonQuery()
            Else
                If chkbEwallet.Checked = True Then
                    conn.Open()
                    sql = "UPDATE Order SET payment_method_id = 2 WHERE Id = '" + FoodMenu.OrderID + "';"
                    cmd = New SqlCommand(sql, conn)
                    cmd.ExecuteNonQuery()
                Else
                    MsgBox("Please choose 1 Payment Method", MsgBoxStyle.Exclamation, "Error")
                End If
            End If
        End If
        Dim Amount As String
        Amount = InputBox("Enter Paying Amount (EX:100.00)", "Amount")
        If (IsNumeric(Amount)) = True Then
        .
        .
        .

這是您的代碼應如下所示:

Private Sub btnPay_Click(sender As Object, e As EventArgs) Handles btnPay.Click
    Dim paymentMethodId As Integer

    If chkbNotes.Checked Then
        paymentMethodId = 1
    ElseIf chkbCreditCard.Checked Then
        paymentMethodId = 2
    ElseIf chkbEwallet.Checked Then
        paymentMethodId = 3
    Else
        MessageBox.Show("Please choose 1 Payment Method", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        Return
    End If

    sql = "UPDATE Order SET payment_method_id = @PaymentMethodId WHERE Id = @Id"
    cmd = New SqlCommand(sql, conn)

    cmd.Parameters.Add("@PaymentMethodId", SqlDbType.Int).Value = paymentMethodId
    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = FoodMenu.OrderID

    conn.Open()
    cmd.ExecuteNonQuery()

我冒昧地假設 payemtn 方法 ID 在第三種情況下應該是 3,而不是您在原始代碼中使用的 2。

我還建議更改您的 ADO.NEt 代碼,因為您似乎正在重用連接和命令對象。 您應該在需要它們的時間和地點創建和銷毀它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM