4

1 つのフォームに約 50 個のラジオボタンがあり、それぞれが変更されたときに検出する if ステートメントを作成したくありません。それらはグループ ボックスの一部ではありません。ラジオボタンが変更されたかどうかを検出し、その名前を別の変数に書き込むにはどうすればよいですか?

4

2 に答える 2

5

すべてのラジオ ボタンをパネルに配置し、パネルのラジオ ボタン コントロールをループして、@Steve で説明されているように、それぞれに同じイベント ハンドラーをプログラムで追加します。イベントを処理する方法の 1 つは、各ラジオ ボタンのタグ プロパティにインデックスを割り当てることです。次に、関連するデータをオブジェクトのリストに保存し、そのタグを使用してリストから対応するオブジェクトを引き出すことにより、そのラジオ ボタンのデータにアクセスします。手作業で行うよりもはるかに簡単です。

編集:良いキャッチ@Neolisk。回答を更新しました。

于 2013-03-20T21:16:00.887 に答える
4

50個のラジオボタンすべてのCheckedChangedイベントを常に同じイベントハンドラーに設定できます。これはコードを介して行われた例です:

Private Sub OnChange(sender As System.Object, e As System.EventArgs)
    Dim rb = CType(sender, RadioButton)
    Console.WriteLine(rb.Name + " " + rb.Checked.ToString)
End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    AddHandler Me.RadioButton1.CheckedChanged, AddressOf OnChange
    AddHandler Me.RadioButton2.CheckedChanged, AddressOf OnChange
    ' and so on .....'
End Sub

私はコードを介してこれを行い、長い追加を避けるためにデザイナーを使用しませんでしたHandles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged .......

于 2013-03-20T20:49:44.813 に答える