在事件中限制代碼以處理與用戶有關的事情通常是明智的。您可以將常用的代碼在潛艇和事件,其他方法(替補)等函數調用它們:
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個複選框顯示不同的曲線和一個操作曲線的單選按鈕,所以當用戶改變收音機切換時,我需要刷新曲線。 –