如果第一个“ If”为真,如何避免遵循“ If”条件

时间:2018-11-01 01:56:45

标签: vb.net

我想让我的第一个If停在"Incorrect user and password",但是到第二个和第三个If"incorrect user""incorrect password"之后{ {1}}。

"incorrect user and password"

1 个答案:

答案 0 :(得分:1)

  1. 您那里的代码太多了。
  2. 您还在不需要的地方使用旧版VB6代码。
  3. 您似乎对变量和变量类型一无所知。

让我解释一下...让我们往回努力...

变量类型很多,每种类型对于特定任务都是必需和/或推荐的。在您的示例中,您有一个numAttempts用于计数失败尝试,但是,您将其作为Double >>> Dim numAttempts As Double,这是错误且浪费的,仅使用标准Integer表示这种情况下的整数。这也很有趣:Dim wrong As String = False。根本上有两件事是错误的。字符串为Text,这意味着它应该始终在文本>>> Dim wrong As String = "False"周围加上引号。但是,使用某种东西来测试TrueFalse应该是Boolean,因此实际上,正确的用法和语法应该是Dim wrong As Boolean = False

旧版VB6代码。将.NET之前的代码与.NET代码混合并匹配从来都不是一件好事。您正在使用Val,请不要这样做。另外,值得注意的是,您的用法是不需要的,只是不正确。您正在使用:loginpassword = Val(txtpass.Text)。你为什么做这个?您认为这里发生了什么?它将尝试将txtpass.Text(字符串)中的内容转换为Double(不是字符串),然后将其放入loginpassword(字符串)中。

我希望您不要犯罪,我只是想让您看到一些缺陷,以便您可以像许多人已经尝试过的那样尝试改进并热爱编程。

那么让我们回到您的原始代码和问题。以下是您想要做的事情的简化版本。

尝试一下,理解它,然后根据需要更改它。例如,如果要单独检查用户名/密码。

祝你好运!

Dim numAttempts As Integer = 3
Dim User As String = "ShaoHecc"
Dim Password As String = "daedric123"

Private Sub btnok_Click(sender As Object, e As EventArgs) Handles btnok.Click

    'Check if Username or Password are incorrect
    If Not txtuser.Text = User Or Not txtpass.Text = Password Then
        numAttempts -= 1
        If numAttempts = 0 Then
            MessageBox.Show("Maxiumum number attempts reached, you have been denied access.")
            Application.Exit()
        End If
        MessageBox.Show("Invalid Username or Password, you have " & numAttempts & " attempts left.")
        Exit Sub
    End If

    'Username and Password are correct
    MessageBox.Show("Access Granted!")
    numAttempts = 3 'Reset if needed
End Sub