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

时间:2013-08-01 01:40:06

标签: 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

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

1 个答案:

答案 0 :(得分: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

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

If CType(sender, CheckBox).Text = "Cup of Java" ....