我有一个相当简单的问题(我认为)在使用Visual Basic在表单之间传递变量。
我有一个包含2个表单的程序(Form1和Form2)。 Form1有3个单选按钮,用户必须选择其中一个,然后加载Form2。
现在我已经做到了,如果选择radiobutton1,公共变量“radio_select”将等于“radiobutton1”,如果选择了radiobutton2,“radio_select”将等于“radiobutton2”。
但是每当我尝试在我的第二种形式中调用“radio_select”时,它就会出现空白。为什么会这样?我该如何解决呢。
我已尝试使用if form1.radiobutton1.checked = true
,但无论我选择哪个单选按钮,我都会继续获得第一个单选按钮。
我认为表单正在卸载,或者某处存在问题,因为一旦初始化,它们似乎没有传递给第二个表单。另请注意,调用第二个表单时,第一个表单隐藏Me.Hide()
。
答案 0 :(得分:2)
您是否考虑过轻微的重新设计,在Form2上创建一个名为RadioSelect的属性,然后在显示Form2之前从Form1设置它:
Class Form2
Public Property RadioSelect As String
...
End Class
...
Dim f2 as new Form2()
f2.RadioSelect = "radiobutton2"
f2.Show() ' Or f2.ShowDialog()
这使您远离不必要的公共变量,并且还应该确保Form2可以从Form1或任何调用它的人那里看到它需要什么。
修改强> 以下适用于我:
Public Class Form1
Public Test As String
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Test = "I'm Here"
Me.Hide()
Form2.ShowDialog()
End Sub
End Class
Public Class Form2
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Text = Form1.Test
End Sub
End Class