#vb.net
#vb.net
Вопрос:
У меня есть групповой блок с несколькими флажками (элемент питания), и у каждого из них есть соответствующий элемент управления NumericUpDown (количество). Что касается контекста, то это для проекта, основанного на меню ресторана. Я хочу скрыть кнопку с именем btnSave всякий раз, когда либо флажок снят, либо количество (NumericUpDown) изменяется. В настоящее время у меня есть подпроцедуры btnSave.Hide
под CheckBox1_CheckedChanged
и NumericUpDown1_CheckedChanged
, но я хочу знать, есть ли способ сделать это, когда что-либо в этом групповом блоке изменяется, вместо того, чтобы помещать код под каждую подпроцедуру. Спасибо
Комментарии:
1. Вы можете использовать один обработчик событий для обработки любого количества событий, сколько захотите. Посмотрите на ключевое слово Handles в объявлении метода event, просто добавьте больше имен элементов управления.
Ответ №1:
Я думаю, вы имели в виду .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
Комментарии:
1. Привет, Мэри, большое спасибо за то, что это именно то, что я искал. На самом деле у меня есть
.ValueChanged
в моем коде, который я просто неправильно ввел здесь. Еще раз спасибо