0

您好,这是一个我无法解决的非常奇怪的错误。我的表单加载中有一个 while 循环,看起来是这样的:

While loginOK = False And pstop = False
        LoginForm1.ShowDialog()
        If NewReg = True Then
            While RegErfolgreich = False
                Registrierung.ShowDialog()

                Dim con As New SqlConnection(My.Settings.SLXADRIUMDEVConnectionString)
                con.Open()

                Dim cmd = New SqlCommand("Insert Into sysdba.PL_Userverwaltung        (Benutzername, Passwort, [E-Mail-Adresse], Profil_OK) Values('" & RegBenutzername & "', '" & RegPassword & "', '" & RegEMailAdresse & "', 'f')", con)

                If cmd.ExecuteNonQuery() = 1 Then
                    My.Settings.Benutzername = RegBenutzername
                    My.Settings.Passwort = RegPassword
                    My.Settings.Save()
                    Me.Close()
                    RegErfolgreich = True
                Else
                    MsgBox("Es ist ein Fehler aufgetreten.")
                End If

            End While
        Else
            NewReg = False
        End If

    End While

问题是,在关闭 loginform1 后,他跳回循环,当他再次开始循环时,他打开 loginform1 并立即关闭它。并在while循环中再次循环。

这意味着我有一个无限循环,它显示 loginform1 并在一毫秒后关闭它。有一件事要提的是,我的一个朋友在一个较旧的 vs Studio 版本中打开了我的项目,并且这个神秘的错误没有发生?

希望输入欢呼

编辑:

这是 loginform1 代码

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

    If UsernameTextBox.Text <> "" And PasswordTextBox.Text <> "" Then
        Startseite.LoginUsername = UsernameTextBox.Text
        Startseite.LoginPassword = PasswordTextBox.Text
        Startseite.loginOK = True
        Me.Close()
    Else
        MsgBox("Bitte Benutzername und Passwort eingeben!")
    End If

End Sub

Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
    Startseite.pstop = True
    Me.Close()
End Sub

Private Sub LoginForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    If My.Settings.Benutzername <> "" And My.Settings.Passwort <> "" Then
        'MsgBox(My.Settings.Benutzername & "  " & My.Settings.Passwort)
        UsernameTextBox.Text = My.Settings.Benutzername
        PasswordTextBox.Text = My.Settings.Passwort
    End If
End Sub

Private Sub lblNeuRegistrieren_Click(sender As Object, e As EventArgs) Handles lblNeuRegistrieren.Click
    Startseite.NewReg = True
    Me.Close()
End Sub
4

2 回答 2

0

关于您的错误,可能您没有将您的 startseite 变量初始化为您的主表单, loginOK 并且 pstop 永远不会改变,这就是循环永远不会停止的原因。但是在您的代码的其余部分,一些一般提示。

这是不必要的

    If NewReg = True Then
    ''
    Else
        NewReg = False
    End If

如果 NewReg 不为真,则根据定义它为假。应该

    If NewReg Then
    ''
    End If

此外,在 loginForm1 上重载 showDialog 是比在第二个表单上添加 yourmainclass 对象更好的解决方案。它更容易调试并提供更好的可重用性。

于 2014-04-10T07:51:34.670 回答
0

尝试在消息框上退出循环

If cmd.ExecuteNonQuery() = 1 Then
    My.Settings.Benutzername = RegBenutzername
    My.Settings.Passwort = RegPassword
    My.Settings.Save()
    Me.Close()
    RegErfolgreich = True
Else
    MsgBox("Es ist ein Fehler aufgetreten.")
    Exit While
End If
于 2014-04-10T07:59:39.680 回答