2

私の意図は、新しいラジオ ボタンが選択されるたびに計算されたラベルをクリアすることです。現在、次のように、同じサブプロシージャを呼び出す7つの個別のクリックイベントでそれを行っています。

' the following 7 subprocedures clear totals boxes if any radio button is changed
Private Sub rbCappuccino_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbCappuccino.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbChocolate_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbChocolate.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbFilled_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbFilled.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbGlazed_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbGlazed.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbNone_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbNone.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbRegular_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbRegular.CheckedChanged
    Call ClearLabels()
End Sub

Private Sub rbSugar_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbSugar.CheckedChanged
    Call ClearLabels()
End Sub

すべてのイベントがまったく同じサブ プロシージャを呼び出す場合に、これらのイベントを統合する方法があるかどうかに興味があります。アドバイスをいただければ幸いです。ありがとう!

4

1 に答える 1

5

はい、複数のイベントを 1 つのイベント ハンドラーにアタッチできます。

Private Sub CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rbCappuccino.CheckedChanged, rbChocolate.CheckedChanged, rbFilled.CheckedChanged, rbGlazed.CheckedChanged, rbNone.CheckedChanged, rbRegular.CheckedChanged, rbSugar.CheckedChanged
    Call ClearLabels()
End Sub

このようなコード内では、個々のコントロールに作用するイベントを呼び出した CheckBox を検出することもできます。

If CType(sender, CheckBox).Text = "Cup of Java" ....
于 2013-08-01T01:44:42.997 に答える