3 回答

TA貢獻1784條經驗 獲得超9個贊
您可以創建一個事件接收器類,它將包含特定類型的所有控件的事件處理代碼。
例如,創建一個名為的類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
現在,您需要為表單上的相應類型的每個控件創建并連接該類的實例:
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
請注意,您需要將事件處理程序實例添加到集合的原因只是為了確保它們仍然被引用,因此在您完成它們之前不會被垃圾收集器丟棄。
顯然,這種技術可以擴展到處理其他類型的控制。您可以為每種類型分別設置事件處理程序類,也可以為需要處理的每種控件類型使用一個具有成員變量(以及關聯的屬性和事件處理程序)的類。
添加回答
舉報