如何停止或阻止消息框弹出?

时间:2018-06-23 11:36:17

标签: vb.net

我已经完成了数据验证。因此,当没有输入正确的数据时,它将显示一个显示错误的消息框,但同时也显示了以下要阻止或隐藏该消息框的消息框。这是下面的代码。请告诉我我的错误并提供解决方案。谢谢

    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

1 个答案:

答案 0 :(得分:0)

只需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

它可能最终是 more 代码,但这并不是一件坏事。它仍然是更好的代码。

我认为您不需要在已经是字符串的东西上调用CStr() ...


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