Vb.net 在Visual Basic中将一个窗体的值转换为另一个窗体
我试图在另一个表单(表单2)中获取一个表单(表单1)的整数值。我试图通过下面的代码访问它,但没有得到它。有人能告诉我我做错了什么吗Vb.net 在Visual Basic中将一个窗体的值转换为另一个窗体,vb.net,Vb.net,我试图在另一个表单(表单2)中获取一个表单(表单1)的整数值。我试图通过下面的代码访问它,但没有得到它。有人能告诉我我做错了什么吗 Public Class Form1 Public Points As Integer = 100 Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Label1.Text = Points End Sub Pub
Public Class Form1
Public Points As Integer = 100
Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = Points
End Sub
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.Show()
Me.Hide()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim FinalPoints As New Form1
Label1.Text = FinalPoints.Label1.Text
End Sub
End Class
问题:当您显示Form2(Form2_加载被执行)时,会创建一个新的Form1。这个新创建的Form1尚未执行Form1\u加载函数 您需要使用FinalPoints.show()显示新创建的FinalPoints(Form1),如下所示:
Dim FinalPoints As New Form1
FinalPoints.Show()
Label1.Text = FinalPoints.Label1.Text
让Form1_Load函数执行,然后设置FinalPoints.Label1.Text。但这只会打开一个新的表格1
此外,您也可以像这样在Form2_加载中获取public Points变量(您也不必创建新的Form1):
或者:在显示表单之前,只需在Form2中使用一个公共变量并为其赋值即可
Public Class Form1
Public Points As Integer = 100
Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = Points.ToString
End Sub
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim FinalPoints As New Form2
FinalPoints.StringFromForm1 = Label1.Text
FinalPoints.Show()
Me.Hide()
End Sub
End Class
Public Class Form2
Public Property StringFromForm1 As String
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = StringFromForm1
End Sub
End Class
这一行:
Dim FinalPoints As New Form1
创建Form1的新实例,但您需要的是引用Form1的现有实例。你可以尝试不同的技巧。例如,重载表单2的显示方法
大概是这样的:
Form1:将值传递给Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form2
Me.Hide()
f.Show(Points)
End Sub
Form2:从调用方获取值(Form1)
这回答了你的问题吗?这回答了你的问题吗?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f As New Form2
Me.Hide()
f.Show(Points)
End Sub
Public Class Form2
Public Overloads Sub Show(ByVal Points As Integer)
Me.Label1.Text = Points.ToString
MyBase.Show()
End Sub
End Class