3 回答

TA貢獻1784條經(jīng)驗 獲得超9個贊
您可以創(chuàng)建一個事件接收器類,它將包含特定類型的所有控件的事件處理代碼。
例如,創(chuàng)建一個名為的類TextBoxEventHandler,如下所示:
Private WithEvents m_oTextBox as TextBox
Public Property Set TextBox(ByVal oTextBox as TextBox)
Set m_oTextBox = oTextBox
End Property
Private Sub m_oTextBox_Change()
' Do something
End Sub
現(xiàn)在,您需要為表單上的相應類型的每個控件創(chuàng)建并連接該類的實例:
Private m_oCollectionOfEventHandlers As Collection
Private Sub UserForm_Initialise()
Set m_oCollectionOfEventHandlers = New Collection
Dim oControl As Control
For Each oControl In Me.Controls
If TypeName(oControl) = "TextBox" Then
Dim oEventHandler As TextBoxEventHandler
Set oEventHandler = New TextBoxEventHandler
Set oEventHandler.TextBox = oControl
m_oCollectionOfEventHandlers.Add oEventHandler
End If
Next oControl
End Sub
請注意,您需要將事件處理程序?qū)嵗砑拥郊系脑蛑皇菫榱舜_保它們?nèi)匀槐灰?,因此在您完成它們之前不會被垃圾收集器丟棄。
顯然,這種技術可以擴展到處理其他類型的控制。您可以為每種類型分別設置事件處理程序類,也可以為需要處理的每種控件類型使用一個具有成員變量(以及關聯(lián)的屬性和事件處理程序)的類。
添加回答
舉報