2

Visual Basicを使用してフォーム間で変数を渡すことについて、かなり簡単な質問があります(私は思います)。

2つのフォーム(Form1とForm2)のプログラムがあります。Form1には3つのラジオボタンがあり、ユーザーはそのうちの1つを選択して、Form2をロードする必要があります。

これで、radiobutton1が選択された場合、パブリック変数「radio_select」が「radiobutton1」に等しくなり、radiobutton2が選択された場合、「radio_select」が「radiobutton2」に等しくなるようになりました。

しかし、2番目のフォームで「radio_select」を呼び出そうとすると、空白になります。なぜこれができるのでしょうか?そして、どうすればそれを修正できますか。

使用してみましif form1.radiobutton1.checked = trueたが、選択したラジオボタンに関係なく、最初のラジオボタンが表示され続けます。

フォームがアンロードされているか、どこかに問題があると思います。初期化されると、どの変数も2番目のフォームに渡されないようです。Me.Hide()また、2番目のフォームが呼び出されると、最初のフォームが非表示になることに注意してください。

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 に答える