В целом разумно ограничивать код в событиях обработкой связанных с пользователем вещей. Вы можете разместить общий код в сабвуферов и вызывать их из событий, другие методы (СУБ) и другие функции:
Sub myCheckBox(sender As Object, e As EventArgs) Handles myCheckBox.CheckedChanged
' user/click related code
' ...
CommonReusableCodeSub(sender As object)
End Sub
Function MyOtherFunction(x as double, y as double) as double
' do some special stuff, maybe even just to prep
' for the call to a common sub
CommonReusableCodeSub(Nothing)
End function
Sub CommonReusableCodeSub(chk as CheckBox) ' can also be a function
' do stuff common to both above situations
' note how to detect what is going on:
If chk Is Nothing then
' was called from code, not event
' do whatever
Exit Sub ' probably
End If
Select Case chk.Name ' or maybe chk.Tag
chk.thisOption
' do whatever
chk.thatOption
' do whatever
' etc...
End Select
End Sub
Это предотвращает приложение логики (бизнес/Интернет и т.д. и т.п. и т.д.) от получения безнадежно перемешались и даже зависит от UI-слой и текущий макет. Примечание: некоторые элементы управления реализуют способ вызова кода события: кнопки и радиоприемники, например, имеют btn.PerformClick
, нет такой удачи с флажками.
Спасибо за быстрый ответ, и я ценю, где вы едете с. В этом случае, однако, у меня есть много флажков, которые должны быть «обновлены», т.е. их код запускается при изменении переключателя радио. То, как вещи устанавливаются, я прохожу через флажки, чтобы определить, какие из них проверены, а затем нужно запустить метод для каждого флажка. –
все еще выполним с небольшим количеством абстракции ... см. Править (флажок действительно радио?) – Plutonix
«Является ли флажок действительно радио» - нет того, что у меня есть графическое приложение, где есть 10 флажков, которые показывают разные кривые и радиомаяк, который манипулирует кривыми, поэтому, когда пользователь меняет радиопереключение, мне нужно обновить кривые. –