【发布时间】:2014-04-10 07:09:27
【问题描述】:
您好,这是一个我无法解决的非常奇怪的错误。我的表单加载中有一个这样的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
【问题讨论】:
-
为了回答你的问题,LoginForm1 的代码会很有趣。在表单的代码中,是否有在某些情况下立即关闭表单的代码?另请注意,
NewReg = False行没有意义,因为它仅在NewReg已经为假时运行。 -
显示编辑 :) 没问题
-
Load 事件是有风险的,在某些 Windows 版本上,它有在附加调试器时吞下异常的习惯。在“输出”窗口中查找任何“第一次机会异常”通知。使用 Debug + Exceptions, Throw 复选框让调试器停止它们。