vb.net - Visual Basic 如何在显示 MsgBox 后停止事件
问题描述
我想确保用户在我的进一步处理之前检查了我的 3 个复选框之一,因此我创建了下面的函数并在他们没有检查任何内容时生成一个 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 代码,因为您似乎正在重用连接和命令对象。您应该在需要它们的时间和地点创建和销毁它们。
推荐阅读
- python - 如何在 Win10 的 Jupyter notebook 中从 Python 单元格创建 csv 文件?
- php - 使php循环回显内容一次
- python - 为用户添加角色 discord.py
- rest - SharePoint 2019 应用程序的后端
- botframework - 如何在不使用 node.js 框架的情况下实现 MS Teams 机器人?
- python - 尝试通过 pip 将 Google Maps 模块安装到 python 语法错误上
- javascript - 对象[] | object[] 类型缺少 'find(),foreach()' 的调用签名
- android - 在 ARCore Android 中使用画中画模式
- typescript - 以编程方式从 API 数据创建 Typescript 声明
- typescript - 如何使Atom黄瓜步跳包在windows上工作?