变量不会在vb.net中更新
问题描述:
我的vb.net代码有问题,我有一个连接到mysql数据库的登录表单。它可以检查用户是否在数据库中,现在接下来要做的是根据登录帐户从数据库中获取名称,访问级别和userId,我将它存储在一个包含全局变量的模块中。变量不会在vb.net中更新
这是我的代码。
Module pubvars
Public Gplev As String
Public Gname As String
Public GuserId As Integer
End Module
然后,我将使用这个变量上的其他形式,在变量记录的第一届会议正确地读出,但是当我退出,然后用新的用户帐户登录,传递的变量没有更新,这被认为是在一个新帐户登录时更改的。
这里是我声明变量的代码。
Dim search1 As MySqlCommand = New MySqlCommand("SELECT * FROM `login` WHERE login.username = '" & TextBox1.Text & "' AND login.password = '" & TextBox2.Text & "'", con)
con.Open()
Dim dr As MySqlDataReader = search1.ExecuteReader
Dim userFound As Boolean = False
While dr.Read
userFound = True
pubvars.Gname = dr("name").ToString
pubvars.Gplev = dr("permission_level").ToString
pubvars.GuserId = dr("userId").ToString
End While
If userFound = True Then
main_menu.Show()
Me.Hide()
Else
MsgBox("Sorry, username or password not found", MsgBoxStyle.OkOnly, "Invalid Login")
TextBox1.Text = ""
TextBox2.Text = ""
End If
这里是我在第二种形式使用变量的代码。
Private Sub main_menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label3.Text = pubvars.Gname
If pubvars.Gplev = "2" Then
Button8.Enabled = False
Button8.Visible = False
ElseIf pubvars.Gplev = "3" Then
Button8.Enabled = False
Button8.Visible = False
ElseIf pubvars.Gplev = "4" Then
Button8.Enabled = False
Button8.Visible = False
End If
End Sub
对于注销我有以下code.Is这个权利或它是不够的退出?
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
pubvars.Gname = ""
pubvars.Gplev = "0"
login.Show()
Me.Hide()
End Sub
答
将登录变量赋值逻辑从Load事件移到Activated事件。 Load事件只会在第一次加载Form时执行一次。
每当您显示表单.Show()
时,激活的事件就会发生。如果您将代码从Load事件移到Activated,您应该修复这个问题。
您是否在找到用户,进入第二个窗体,然后pubvars不再存储您的值? –
@Mort pubvars不再通过在不同帐户上登录后将值传递给第2个窗体,或者标签3显示puvars中的值没有显示值。类似的事情发生了。 –
看起来应该可以工作。设置一个断点并一步一步确保代码为新登录运行 – Plutonix