根据组框中控件的更改触发VB中的事件

时间:2019-03-18 14:56:31

标签: vb.net

我有一个带有多个Checkboxes(食品)的组框,每个都有一个对应的NumericUpDown控件(数量)。就上下文而言,它是基于餐厅菜单的项目。每当取消选中复选框或更改数量(NumericUpDown)时,我都想隐藏一个名为btnSave的按钮。我目前在btnSave.HideCheckBox1_CheckedChanged子程序下有NumericUpDown1_CheckedChanged,但是我想知道是否有办法改变该组框内的任何内容,而不是将代码放在每个子程序下。谢谢

1 个答案:

答案 0 :(得分:0)

我认为您的意思是.ValueChanged用于NumericUpDown控件。 (没有.CheckedChanged)虽然在这种情况下无关紧要,但这是一个很好的模式,可供将来参考。不用调用事件,而是从事件中调用Sub。

当有多个控件对单个事件处理程序做出响应时,可以通过检查sender参数来找出哪个控件触发了事件。如您所见,由于senderObject,因此您必须将其转换为适当的类型才能获得CheckBox的属性。

Private Sub HideSaveButton()
    btnSave.Hide
End Sub

Private Sub CheckBoxInGroupBox_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged
    HideSaveButton()
    Dim WhichCheckBox As CheckBox = DirectCast(sender, CheckBox)
    Select Case WhichCheckBox.Name
        Case "CheckBox1"
            MessageBox.Show("CheckBox1 has changed")
        Case "CheckBox2"
            MessageBox.Show("CheckBox2 has changed")
    End Select
End Sub

Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged
    HideSaveButton()
End Sub
相关问题