回 帖 发 新 帖 刷新版面

主题:请高手看下我这段代码

[color=000000][size=4] Dim count As Integer

    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If MaskedTextBox1.Text = "" Or MaskedTextBox2.Text = "" Then MsgBox("用户名和密码都不能为空") : Exit Sub
        count = count + 1
        If count = 4 Then End
        If MaskedTextBox1.Text <> "sa" Or MaskedTextBox2.Text <> "198788" Then MsgBox("用户名或密码错误!你还有" & 4 - count & "次机会登录") : MaskedTextBox1.Text = "" : MaskedTextBox2.Text = "" : Exit Sub
        Form3.Show()
    End Sub[/size][/color][color=00FF00][size=3]本人是刚刚接触VB.NET的学生对很多知识都不是很了解,如果是很简单的问题请大家不要见笑,
这是一个登录某一系统的项目,当出现三次用户名或者密码错误时便退出登录,但我做的这段出现了一个漏洞,就是假如前两次用户名或者密码错误  第三次登录在用户名和密码都正确的情况下还是退出了登录。实在是搞不懂  是不是 count = count + 1这句代码的位置不对,请高手指点一下[/size][/color]

回复列表 (共4个回复)

沙发

逻辑不对,第2个和第3个 if应该是并列的

板凳

1、为了好调试,我修改了你的控件名称,和成功结果。
Private Sub Command1_Click()
    If Text1 = "" Or Text2 = "" Then
        MsgBox ("用户名和密码都不能为空")
    ElseIf Text1 <> "sa" Or Text2 <> "198788" Then
        Text1 = ""
        Text2 = ""
        错误次数 = 错误次数 + 1
        If 错误次数 = 3 Then
            MsgBox ("用户名或密码错误!你用完了所有的登录机会")
            End
        Else
            MsgBox ("用户名或密码错误!你还有" & 2 - 错误次数 & "次机会登录")
        End If
    Else
        MsgBox "OK"
    End If
End Sub

2、书写代码,不要以行数轮英雄。结构化书写,会提高你程序的可读性。

3 楼

3、发帖时,请主体字体的大小,不要互相覆盖;注意文字的颜色,不要让人看不清楚。

4 楼

奥,对了,变量声明,你加上哦

我来回复

您尚未登录,请登录后再回复。点此登录或注册