我有一个带有多个Checkboxes(食品)的组框,每个都有一个对应的NumericUpDown控件(数量)。就上下文而言,它是基于餐厅菜单的项目。每当取消选中复选框或更改数量(NumericUpDown)时,我都想隐藏一个名为btnSave的按钮。我目前在btnSave.Hide
和CheckBox1_CheckedChanged
子程序下有NumericUpDown1_CheckedChanged
,但是我想知道是否有办法改变该组框内的任何内容,而不是将代码放在每个子程序下。谢谢
答案 0 :(得分:0)
我认为您的意思是.ValueChanged
用于NumericUpDown
控件。 (没有.CheckedChanged
)虽然在这种情况下无关紧要,但这是一个很好的模式,可供将来参考。不用调用事件,而是从事件中调用Sub。
当有多个控件对单个事件处理程序做出响应时,可以通过检查sender参数来找出哪个控件触发了事件。如您所见,由于sender
是Object
,因此您必须将其转换为适当的类型才能获得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