How can i achieve event handling for dynamic controls in VB6? Any ideas?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The easiest way is to declare a module-level variable of the same type as the control, and use the WithEvents
keyword. For example
Option Explicit
' Declare object variable as CommandButton and handle the events.'
Private WithEvents cmdObject As CommandButton
Private Sub Form_Load()
'Add button control and keep a reference in the WithEvents variable'
Set cmdObject = Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible = True
cmdObject.Caption = "Dynamic CommandButton"
End Sub
'Handle the events of the dynamically-added control'
Private Sub cmdObject_Click()
Print "This is a dynamically added control"
End Sub
There are more complicated variations if you want to be able to handle events from many different controls, perhaps of different types, through one central routine.
回答2:
That depends on whether the control is intrinsic or not.
This article explains it.