你好,这是一个我无法解决的非常奇怪的错误。我的formload中有一个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工作室版本中打开了我的项目,这个神秘的错误没有发生?
希望输入欢呼声
编辑:
这是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
答案 0 :(得分:0)
关于你的错误,可能你没有初始化你的startseite变量作为你的主要形式,loginOK和pstop永远不会改变,这就是循环永不停止的原因。但是在代码的其余部分,一些常规提示。
这是不必要的
If NewReg = True Then
''
Else
NewReg = False
End If
如果NewReg不成立,那么根据定义,它是错误的。应该是
If NewReg Then
''
End If
此外,在loginForm1上重载showDialog是比在第二个表单上添加yourmainclass对象更好的解决方案。它更容易调试并提供更好的可重用性。
答案 1 :(得分: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