我有一个相当简单的问题(我认为),关于使用 Visual Basic 在窗体之间传递变量。
我有一个包含 2 个表单(Form1 和 Form2)的程序。 Form1 有 3 个单选按钮,用户必须选择其中一个,然后加载 Form2。
现在我已经做到了,如果选择了 radiobutton1,公共(public)变量“radio_select”将等于“radiobutton1”,如果选择了 radiobutton2,“radio_select”将等于“radiobutton2”。
但是每当我尝试在第二种形式中调用“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()
这可以让您远离不必要的公共(public)变量,并且还应确保 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
关于vb.net - 跨表单使用变量 - VB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253944/