正如标题所说,我无法将记录的用户信息提供给form2。我正在使用访问数据库。
这是我的代码:
Public Class Form1
Public id, pw, bal, nme As String
Private Sub CardBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles CardBindingNavigatorSaveItem.Click
Me.Validate()
Me.CardBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.KartDataSet)
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
id = Card_IDTextBox.Text
pw = PasswordTextBox.Text
Dim login = CardTableAdapter.IDPW(id, pw)
If login Is Nothing Then
MsgBox("Check ID or PW")
Else
MsgBox("Welcome, now you are connecting.")
Form2.Show()
bal = Form2.BalanceTextBox.Text
nme = Form2.UserTextBox.Text
End If
End Sub
End Class
我究竟做错了什么?
如果评论中的代码..
id = Form1.Card_IDTextBox.Text
pw = Form1.PasswordTextBox.Text
bal = Me.BalanceTextBox.Text
nme = Me.UserTextBox.Text
在你的form2.Load处理程序,当你打电话
Form2.Show()
上面的代码永远不会运行。你需要将它移动到你的Form2.Shown
事件中。像这样 ..
Private Sub Form2_Shown(sender As Object, e As EventArgs) Handles Me.Shown
id = Form1.Card_IDTextBox.Text
pw = Form1.PasswordTextBox.Text
bal = Me.BalanceTextBox.Text
nme = Me.UserTextBox.Text
End Sub
.Load
事件仅在创建Form2类的实例时触发。 Visual Studio在幕后创建代码,在程序启动时自动创建Form2的默认实例。当然,在那时,你的文本框等没有值,所以任何像你的代码将在Form2.Load
处理程序中无用:-)