Visual Basic:有没有办法合并调用相同子过程的7个点击事件?

Jer*_*rry 2 vb.net visual-studio-2010

我的目的是在选择新的单选按钮时随时清除计算标签.目前,我正在使用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
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有办法巩固这些事件,因为他们都称之为完全相同的子程序.任何意见,将不胜感激.谢谢!

Yur*_*ter 5

是的,您可以将多个事件附加到单个事件处理程序:

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
Run Code Online (Sandbox Code Playgroud)

在这样的代码中,您甚至可以检测哪个CheckBox调用事件来对各个控件执行操作:

If CType(sender, CheckBox).Text = "Cup of Java" ....
Run Code Online (Sandbox Code Playgroud)