2

关于使用 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()另请注意,调用第二个表单时,第一个表单会被隐藏。

4

1 回答 1

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
于 2012-09-04T13:37:29.373 回答