【问题标题】:How to stop or block message box from popping up?如何阻止或阻止消息框弹出?
【发布时间】:2018-12-02 16:32:40
【问题描述】:

我已经完成了数据验证。所以现在当没有输入正确的数据时,它会显示一个显示错误的消息框,但它也会显示以下消息框,我想阻止或隐藏消息框弹出。下面是我的代码。请告诉我我的错误并给我一个解决方案。谢谢

    Dim digit As Integer
    Dim text As String
    Try
        digit = CInt(txtsid.Text) & CInt(txtsph.Text)
        Text = CStr(txtsfn.Text) & CStr(txtsln.Text) & CStr(txtsem.Text) & CStr(txtint.Text)
    Catch ex As Exception
        MessageBox.Show("Please Type In A Proper Information")
    End Try
    Dim result As Integer = MessageBox.Show("Are you sure you want to proceed?", "Proceed", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If result = DialogResult.Yes Then
        cmdInsert.CommandText = "Insert into student Values(" + txtsid.Text + ",'" + txtint.Text + "','" + txtsfn.Text + "','" + txtsln.Text + "', '" + cmbgen.Text + "', " + txtsph.Text + ", '" + txtsem.Text + "');"
        cmdInsert.CommandType = CommandType.Text
        cmdInsert.Connection = cnnOLEDB
        cmdInsert.ExecuteNonQuery()
        UserHomepage.Show()
        Me.Hide()
    ElseIf result = DialogResult.No Then
        Me.Show()
        UserHomepage.Hide()
    End If
End Sub

【问题讨论】:

  • 使用 Try..Catch 而不是执行正确的验证被认为是不好的做法。异常处理应该只用于捕获完全出乎意料的问题。数据输入不是这些情况之一。您需要自己手动检查数据。它使将来的代码更易于维护和理解。

标签: vb.net


【解决方案1】:

只需Return or Exit Sub 退出Sub

Try
    digit = CInt(txtsid.Text) & CInt(txtsph.Text)
    Text = CStr(txtsfn.Text) & CStr(txtsln.Text) & CStr(txtsem.Text) & CStr(txtint.Text)
Catch ex As Exception
    MessageBox.Show("Please Type In A Proper Information")
    Return ' --- here
End Try

这将结束整个 Sub(函数、方法,无论您想在 VB 中调用什么)的执行,并将控制权返回给调用者。


注意:有更好的方法来做你想做的事。不应将异常用于逻辑流。解析整数是逻辑流程。不要使用CInt() 并检查异常,而是查看Int32.TryParse()。例如:

Dim sid As Int32
Dim result As Boolean = Int32.TryParse(txtsid.Text, sid)
If Not result
    ' show error
End If

它可能最终会变成更多代码,但这本质上并不是一件坏事。它仍然是更好的代码。

而且我认为您需要在已经是字符串的事情上致电CStr()...


另请注意:您的代码对SQL Injection 是开放的。看看how (and why) to create Parameterized Queries(在其他环境中通常称为准备好的语句)。基本上,虽然您当前将用户输入作为代码执行,但您应该将用户输入仅视为值

【讨论】:

  • 你好,return语句是什么意思,是不是返回到当前的形式?如果是当前表单如何使用return语句?
  • @ganeshwaran: Return(很像Exit Sub)将退出该行的函数。如果您有一个 Function 返回某些内容,您将在该行返回该值。 Sub 不会返回任何内容,因此只需单独使用 Return 语句即可退出它。也看看这里:stackoverflow.com/questions/1004657/…
猜你喜欢
  • 2023-03-21
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 2016-03-20
相关资源
最近更新 更多