关于使用Visual Basic在表单之间传递变量,我有一个相当简单的问题(我想)。
我有一个有两种形式的程序(Form1和Form2)。Form1有3个单选按钮,用户必须选择其中一个,然后加载Form2。
现在我已经这样做了,如果选择了radiobutton1,公共变量"radio_select"将等于"radiobutton 1",如果选择radiobutton.2,"radio_selecti"将等于"radiobutton_2"。
但每当我在第二个表格中尝试调用"radio_select"时,它都会显示为空白。为什么会这样?我该怎么修?
我试过使用if form1.radiobutton1.checked = true
,但无论我选择了哪个单选按钮,我都会得到第一个单选按钮。
我认为表单正在卸载,或者某个地方出现了问题,因为一旦初始化,似乎没有任何变量被传递到第二个表单。还要注意,当调用第二个表单时,第一个表单是隐藏的Me.Hide()
。
您是否考虑过一个轻微的重新设计,即在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