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